Docs
Koodla AI is a coding agent that runs in your terminal. The command is koodla.
It reads your project, makes the change you ask for, and asks before every write.
Install
All you need is Node.js 20 or later. Choose the command for your system:
macOS and Linux
curl -fsSL https://koodla.co/koodla/install.sh | bash
Windows PowerShell
irm https://koodla.co/koodla/install.ps1 | iex
The install script checks your Node version, unpacks into ~/.koodla,
installs dependencies, creates the koodla shortcut and sets up PATH for you.
If a helper like ripgrep is missing it quietly tries to install it; if it cannot, it
tells you what is missing.
Requirements
| What | Required | If missing |
|---|---|---|
node 20+ | yes | install stops |
npm | yes | install stops |
ripgrep | no | search falls back to grep, a little slower |
python3 | no | syntax check is skipped for Python files |
git | no | updates download a package instead |
First run
Connect the terminal once with koodla login. It gives you a one-time
code and opens the secure account flow in your browser:
Koodla — first run Sign in to connect this terminal. Browser opened: https://platform.koodla.co/terminal-login Waiting for approval…
Sign in with your Koodla account and approve the one-time code. Models are called through Koodla's servers and usage is deducted from your plan. You never enter or manage a model provider API key.
Usage
Change into a project directory and type koodla:
Write what you want in plain language. Ask for code, ask for a bug fix, ask how something works, or just talk — the agent decides for itself what the request needs.
One-off task
koodla "set the shipping fee to 49"
koodla ~/mysite "fix the bug in the login form" # give the folder up front
Switching project
Inside a session use /project <path>. All of these work:
| What you type | Means |
|---|---|
/home/you/mysite | absolute path |
~/mysite | from your home directory |
masaüstü/mysite | from the desktop (Desktop / Masaüstü, resolved per OS) |
mysite | name only — current directory, desktop and home are searched |
Commands
| Command | What it does |
|---|---|
koodla | opens a session |
koodla "task" | runs one task and exits |
koodla <folder> "task" | runs one task in that folder |
koodla login | connects this terminal to your Koodla account |
koodla whoami | shows the connected account, plan, and usage left |
koodla logout | revokes this terminal's session and removes it locally |
koodla update | pulls the latest version; keeps your account connected |
koodla version | prints the installed version |
koodla log | usage log summary: cost, turns, tool calls |
koodla uninstall | removes the install and the PATH line (asks first) |
Inside a session
| Command | What it does |
|---|---|
/project <path> | switch project |
/context | what goes to the model on every request, with token counts |
/cost | what this session has cost: tasks, tokens, cache ratio, total |
/diff | which files changed in this session |
/undo | undo the last task's file changes |
/mode | fast, auto or deep — how hard the agent works |
/deny <pattern> | block a path, e.g. /deny ~/Documents/** |
/allow <pattern> | remove a block, or pre-approve a tool |
/clear | forget earlier tasks in this session |
/approve-all | toggle approval prompts for the current session |
/login · /logout | connect or disconnect your Koodla account without leaving the session |
/help · /exit | help · quit |
Working modes
| Mode | What changes | Good for |
|---|---|---|
fast | no planning step, one cheap model, fewer turns | small fixes you already located |
auto | planning step, then the writing model — the default | most work |
deep | the strong model writes too, more turns allowed | architecture, tangled bugs |
Models
Models are included with your Koodla plan. Requests go from the terminal to Koodla's servers, where the selected model is called on your behalf. No provider API key is stored on or sent to your computer.
Available models and their current status can change as the catalogue evolves. See the Models page for details.
Settings
These optional environment settings change local CLI behaviour. Your available models still come from your Koodla plan and the current server catalogue.
| Variable | What it does |
|---|---|
KOODLA_ONAY=0 | skip the approval prompt before writing |
KOODLA_GUNLUK=0 | turn off the usage log |
KOODLA_DEBUG=0 | turn off the local input debug log |
NO_COLOR=1 | turn off colours |
/approve-all when you
only want to disable it for the current session. KOODLA_ONAY=0 disables it
for every session launched with that environment setting.Project rules
Drop a REY.md (or AGENTS.md, CLAUDE.md) in the
project and its contents are attached to every request. Parent folders are read too, so
a rule at the top still applies while you work in a subfolder.
# Rules for this project
- Tests: npm test
- Money is stored as integers so rounding never drifts.
- Every new API endpoint gets input validation.
Up to 8 KB is read — this text goes to the model on every turn.
Behaviour
When you hand it a task, this is what you see, in order:
- It identifies the project. Language and framework are worked out on its own.
- It locates the work. It searches when it has to, and what it searches for scrolls past on screen.
- It prepares the change and asks. Refuse and nothing is written.
- It checks its own work. If the file no longer parses it notices and fixes it.
- It prints the cost. Duration, turn count and cost come last.
- It plans multi-step work. When a job needs several steps it writes the list first and ticks each one off as it goes. The list is fed back to it every time, so it does not lose the thread halfway through.
- It shows the change before writing. Lines leaving in red, lines arriving in green, with the line number — then it asks. You approve what you can see.
- It remembers the last few tasks. Ask for a fix, then say "now write a test for it" — it knows what you mean. The last three tasks are carried as a short summary, not as the full transcript, so it costs almost nothing. If the summary is not enough, it can open the full record of an earlier task by itself.
If the request is small talk or a general question it answers without opening a file.
auto decides how to approach coding tasks by default; use /mode
when you want to choose a faster or deeper workflow yourself.
Security
- It asks before entering a folder. The first time you work somewhere, it says it will be able to read, edit and run files there, and waits for your answer. The decision is remembered per folder.
- You can block paths.
/deny ~/Documents/**and the agent cannot touch them — the check sits in the tool layer, not in an instruction, so the model cannot talk its way around it./allowalso works the other way: pre-approve a tool you are tired of confirming, like/allow run_command(npm test). - You can undo.
/undoputs back every file the last task touched. - It stays inside the project. Every path resolves against the working directory; anything outside is refused.
- It asks before a wide folder. Point it at your home directory or desktop and it tells you it could read every file there, then asks once.
- Writes need approval. Every file change and every shell command is confirmed
(
KOODLA_ONAY=0turns this off). - It does not obey instructions found in tool output. Text like "ignore your previous instructions" inside a file it reads is reported to you, not followed.
- No provider key is stored on your computer. The terminal keeps only its Koodla account connection. Provider credentials remain on Koodla's servers and model requests are routed through Koodla.
Measurement
A 12-task set was built on three real projects (JavaScript, Python, Go). For each task a bug was planted in working code and the correct fix recorded separately. The same tasks were then run side by side with another widely used coding agent.
| Comparison agent | Koodla AI | |
|---|---|---|
| test passed | 12/12 | 12/12 |
| touched the right file | 12/12 | 12/12 |
| cost per task | $0.2532 | $0.0361 |
| time per task | 42s | 44s |
| turns | 9.4 | 4.3 |
The difference does not come from one trick; it comes from measuring what gets sent to the model, and how many times, end to end.
The cost comparison above covers 12 tasks run on both sides (24 runs). Separately, 10 SWE-bench Verified tasks were run across four models and two context settings (80 runs). Those additional runs informed context and model choices; they are not part of the competitor cost comparison.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
koodla: command not found | The PATH change has not taken effect. Open a new terminal or run source ~/.zshrc. |
401 … sign in required | Run koodla login and connect the terminal from the browser page. |
402 … plan limit reached | Your Koodla plan usage is exhausted. Check your account for current usage. |
Cannot find module | Run npm install in ~/.koodla/rey. |
| It changed the wrong file | The change is offered for approval; refuse it and be more specific (name the file or the function). |
| It cost too much | Run koodla log to see what each task cost. The usual cause is turn count. |
Limitations
These are today’s limits. We would rather write them down than hide them.
- Very large tasks. Asking for one sweeping change works worse than splitting it into pieces.
- Undo covers the last task only. Earlier tasks are not kept for undo, and nothing is written to disk — closing the terminal clears it.
- No editor or desktop app. Command line only, for now.
- Nothing visual. It cannot read screenshots or drive a browser.
