A coding agent for the terminal

Reads the repo before it types.

Doko Agent indexes your symbols, call sites and config, plans the change against the code that actually exists, and lands it as a diff you can read. Your test command is the referee, not the model's confidence.

symbols indexed per repo
12.4k
median plan before the first edit
1.9 s
sessions reverted with one command
100%
task “migrate upload route” read · 41 files reasoned · 6 steps style · your lint held · 1 question
~/acme · planned in 1.9 s
97.4%

of sessions end with your test and lint commands exiting clean

12.4k

symbols indexed locally in 2.1 s, call sites included

6steps

in the median plan, each one readable before it runs

0

writes land in your working tree before you accept the diff

§ 01 · One task, end to end

The whole session, one row of receipts.

Scroll and the session moves sideways. Five stages, each one a thing you can open, read and undo — no black box between the prompt and the diff.

01 · read

It maps the repo first

Symbols, imports, call sites and config are indexed locally. Before it says “nothing else calls this”, it has looked.

index  41 files · 12.4k symbols
calls  uploadRoute · 7 sites
config s3.client.ts

band · ice · what it read

02 · plan

A plan you can redirect

Six numbered steps, each naming the file it touches and the test that covers it. Disagree with step three and say so.

1 replace S3Client in upload.ts
2 move retry into lib/retry.ts
3 update upload.test.ts
4 run npm run check

band · violet · what it reasoned

03 · edit

Every write is a diff

Changes arrive as hunks on a branch, in your style, with the imports it added listed apart from the code.

+ import { putObject } from './s3'
- import { upload } from 'aws-sdk'
  @@ routes/upload.ts · 3 hunks

band · orchid · what matched your style

04 · check

Your commands decide

It runs the test, lint and typecheck commands you named. A red exit is a red task, whatever the summary says.

$ npm run check
✓ 148 tests · 0 failing
✗ lint: unused import

band · amber · what it held

05 · hand off

A handoff, not a mystery

You get the branch, the plan it followed, the commands it ran and the one question it could not answer alone.

branch  doko/upload-route
revert  doko undo --session 8f21
open question: keep the legacy key?

band · ice · what you can audit

§ 02 · Reasoning

One plan, split into its claims.

Every step the agent takes is marked by where it came from: a file it read, a conclusion it reasoned, a convention it matched, or a gap it refused to fill.

Task · ~/acme · upload route

Move the upload route off the legacy S3 client without breaking the signed-URL tests.

I read the route and its tests. Uploads are signed in s3.client.ts and consumed in routes/upload.ts1, so the client swap is local to those two files. Because the signed-URL helper is re-exported, the tests only need the mock path changed2. I kept the existing retry wrapper and your logger rather than introducing a new one3. The old upload keys remain valid for 30 days, so nothing in the bucket needs deleting yet4 — I cannot confirm that from the repo, so it is a question for you.

plan · doko-2.441 files readplanned in 1.9 s1 claim held

Claims

5 found
  1. Signing lives in s3.client.ts, used by the routeroutes/upload.ts · s3.client.ts0.99read
  2. Tests only need their mock path changedreasoned from upload.test.ts0.84reasoned
  3. Kept your retry wrapper and logger.eslintrc · lib/logger.ts0.93style
  4. Old keys stay valid for 30 daysno source in repo · held for you0.08held
  5. npm run check is the referee for this taskpackage.json · doko.toml0.97read
ReadReasonedStyleHeld
§ 03 · Method

Four steps, and none of them skip the reading.

  1. 01

    Attach

    Point it at a checkout. It indexes symbols, call sites and config on your machine; nothing is uploaded to plan a change.

    2.1 s index
  2. 02

    Plan

    The task becomes numbered steps that name files and tests. You can edit, reorder or throw the plan away.

    6 steps median
  3. 03

    Write

    Edits land as hunks on a branch, in your formatting, with the imports it added called out separately.

    branch · hunks
  4. 04

    Prove

    It runs the commands you named and reports their exit codes. A failing check sends it back to step two.

    97.4% clean
§ 04 · In the field

A repo carries its own paper trail.

Specs, team process notes, and write-ups older than the framework. The agent reads all of it before it argues for a change — scroll and each document comes forward.

Front page of the open textbook Introduction to Software Engineering, the kind of written spec the agent reads before it edits.
01 · The specIntroduction to Software Engineering · Photo by Rplano on Wikimedia Commons (CC BY 1.0)
Title page of a report on bringing collaborative software development approaches into other partnerships, the team process notes a repo inherits.
02 · The processCollaborative approaches from software development · Photo by Birgit Müller (WMDE) on Wikimedia Commons (CC BY-SA 4.0)
Cover of a 1980s computer magazine, the sort of old technical write-up that explains why a legacy code path still exists.
03 · The old referenceComputer Entertainer 6-8 · Photo by Computer Entertainer (Marylou Badeaux and Celeste Dolan) on Wikimedia Commons (CC BY 4.0)
Title page of an engineering technical manual, the kind of diagrammed document that explains a system before anyone changes it.
04 · The manualElectric Power Plant Design · Photo by USACE on Wikimedia Commons (Public domain)

before any edit

It reads the spec, not just the code

Requirements, ADRs and the README are indexed alongside the functions. When the spec and the code disagree, that is a question for you, not a guess.

the team's habits

It picks up how you work

Lint rules, commit messages and review notes become constraints. The diff it writes already looks like the ones your team merges.

why the legacy path exists

It reads the history too

Old write-ups and comments explain the odd branch in the upload route. It surfaces the reason before proposing to delete anything.

before it touches a system

It reads the manual for the whole system

Architecture notes and diagrams tell it what depends on the route being changed. A diff that looks local gets planned as the wider change it really is.

§ 04 · The gate

Nothing merges because the model sounded sure.

A session finishes when your own checks exit clean. Wire the agent into CI and a branch that fails them never reaches review.

$ doko run "migrate upload route" --gate
  files read   41
  steps        6
  bands  read  38   reasoned  11
         style 4    held      1
  npm run check · 148 tests · exit 0
  ready for review
It is the first agent we let near a refactor on a Friday, because it showed us the plan before it wrote a line and reverted the whole session with one command.
Rae Halloran Staff engineer, Northbeam Logistics
Two days after we attached it, it had read every ADR in the repo and stopped proposing the pattern we retired last year.
Mateo Oyelaran Platform lead, Kestrel Labs
NorthbeamKestrel LabsMarlow & FinchHalden HealthOriel BankCadence Studio
§ 05 · Pricing

Start free. Upgrade when Doko is daily.

Every plan has Doko Auto, effort levels, projects, file attachments, and your full chat history. Higher plans add messages, stronger models, pictures in the chat, and Doko Video: two short videos a month included, then any length or quality from a balance you top up.

Free

$0a month

For trying Doko on real questions.

  • 15 messages a day
  • Doko Flash
  • Doko Auto and two projects
  • Text and code files up to 100 KB
Start free
Pro

$16a month

For people who work with Doko every day.

  • 50 messages a day
  • Doko Pro for deep reasoning
  • Unlimited projects
  • Pictures in the chat: 4 a day
  • Doko Video: 2 videos a month included, then pay as you go
Get Pro
Max

$48a month

For long sessions and heavy reasoning.

  • 110 messages a day
  • Doko Ultra, the strongest model
  • Everything in Pro
  • Pictures in the chat: 10 a day
  • Files up to 2 MB
Get Max
Start with one task

Hand it a change that spans the repo.

Attach a checkout, name your test command, and watch the first plan arrive in under two seconds.