Reads and writes real files
Reads with line numbers, writes without clobbering, and edits by exact string match — an ambiguous match is rejected with the reason rather than guessed at. Every change renders as a diff you can check.
Klaud is a local coding agent with a built-in list of genuinely free, no-card model providers. It reads and writes real files on your machine, runs real commands, and verifies its own work. Bring your own key — or bring no key at all.
What it can do
A model sees each tool result and decides the next step: read the file, change it, run the build, read the error, fix it again. Klaud makes that loop honest — every tool call is shown in the transcript, with its arguments and its timing.
Reads with line numbers, writes without clobbering, and edits by exact string match — an ambiguous match is rejected with the reason rather than guessed at. Every change renders as a diff you can check.
A shell in your working directory, returning stdout, stderr and the real exit code. Windows misreports these, so Klaud wraps commands — a build is only fixed when it is actually broken.
The loop guards itself rather than trusting the model: identical calls are refused, rate limits are honoured, and two steps before the cap Klaud is told to stop starting work and write the summary.
The same agent pointed at a task instead of a question. It plans, shows its task list as it works through the steps, and finishes with a hand-off. Same provider, same workspace, same permissions.
Procedures you write once and Klaud loads when they are relevant — or on
demand with /name. Subagents take side work into their own context
and cannot delegate further or exceed your session.
It can drive a real browser over a DevTools pipe — read a page, click, type — and connect to Gmail so mail is sent from your account, with sending treated as its own permission tier.
The whole surface area
Every capability above is these nine calls against one directory. No plugin can grant more, and a subagent is given fewer, never more. What the agent can reach is what you can inspect right here.
read_filewrite_fileedit_filelist_dirglob_filessearch_textrun_commandfetch_urltodo_write100% free
The Free button opens a picker of endpoints that cost nothing, each probed and confirmed live before it was listed. Trial-credit offers are excluded, and providers that dropped their free tier are removed — with the date and the source link recorded in the app.
Limit: ~40 requests / minute · not published
A 120B mixture-of-experts built for tool use, with a free key and no card. The limit is the point: a per-minute rate refills continuously, so an agent turn is throttled for a minute instead of dead until midnight.
Limit: none · local hardware
Nothing is metered — the only allowance here that never runs out. Runs on your own hardware, so nothing you write travels anywhere.
Limit: 30 / min, 1,000 / day · published
A full per-model table is shown in the picker. One of the best hosted options for an agent, which makes 5–15 requests per task.
Limit: 10,000 Neurons / day · published
Per-model rates are published, so you can compute exactly what a model costs. Setup is one field — the account ID is read out of your token.
Limit: ~1B tokens / month · not published
Measured in tokens rather than requests, roughly 500k tokens per minute per model. Needs a phone-verified account.
Limit: varies · not published
Flash-class models on Google's free tier; ~50 free requests a day on OpenRouter, which has the widest model variety. Figures say so where nothing public exists.
On the numbers. Rate limits are quoted from the providers' own pages and labelled published or not published — Klaud does not verify them, and says so on each card. And tool calling is not optional: files, edits and commands all need it, so a model that refuses the schema falls back to plain chat in the transcript rather than failing silently.
Or bring a key. Anything OpenAI-compatible works — the official API, another gateway, an OmniRoute instance on your own machine, or a local model. Klaud sends each host the parameters it documents and nothing more.
Safety model
Klaud runs a model's instructions against your filesystem. Asking nicely is not a boundary, so every limit below is enforced by the server — where a persuasive answer cannot reach it.
Every path is resolved and rejected if it leaves the workspace —
../, absolute paths and null bytes included. The tools cannot see
your home directory, only the folder you chose.
The server binds 127.0.0.1 and requires a session token on every
API route. A random web page open on your machine cannot drive your agent.
Auto-run for speed. Ask first to confirm every write and command inline, with its exact arguments. Read-only refuses writes and execution outright — by the server, not hidden in the UI.
rm -rf /, mkfs, diskpart,
format C: and fork bombs are blocked before spawning. Commands die
at the timeout, and one huge output cannot eat the context.
Confines are lexical: a symlink inside the workspace that points outside it
will be followed. The browser reads text, not pixels. file:// is
refused so the boundary stays real. Each limit is stated, not glossed.
Settings, one JSON file per conversation, and the session token live in
~/.klaud. Nothing is sent anywhere except the API endpoint you
configure. Delete the folder to reset everything.
The interface
The design has one job: make it obvious what the agent is doing. Tool calls collapse into cards with their diffs, timings and exit codes — so a change is reviewable at a glance, not buried in prose.
Klaud CLI
Klaud CLI is not a second product — it is the same nine tools, the same
permission modes and the same ~/.klaud as the app, driven from a
shell. Replies stream as they are written, tool calls appear as they happen, and
an approval is one keypress.
$ git clone https://github.com/ahpah-dev/klaud.git $ cd klaud && npm i -g . $ klaud Klaud CLI v1.5.0 · nemotron-3.5-120b · permissions: ask · workspace ~/projects/api /help for commands · Ctrl+C cancels a turn ❯ add rate limiting to /login and prove it works → read_file src/routes/login.js ✓ 6ms → run_command node test/rate.test.js ✗ exit 1 · 402ms → edit_file src/routes/login.js ✓ 14 added, 2 removed → run_command node test/rate.test.js ✓ exit 0 · 388ms Added a limiter keyed by IP: 10 requests a minute on /login. Verified by running the suite — 7 passing, exit 0. Nothing outside the workspace changed. ❯ _
Install
Installed from the same repository as the app, so a bug fix reaches both front ends at once. It needs Node 18+ and nothing else: no build step, no daemon, no config file you have to hand-edit.
A folder install works on every npm — including npm 12, which ships with
allow-git and allow-remote set to none.
Where git installs are allowed, the shorthand
npm i -g github:ahpah-dev/klaud does it in one step.
klaudklaud run "…"--json for scriptsklaud -c--resume <id> any of themklaud initklaud providers--check to probe themklaud configklaud doctorklaud skillsklaud serve
One config, two front ends. The CLI and the app share
~/.klaud — set a provider once and both know it, and a conversation
started in the terminal resumes in the browser with its tools and history intact.
Same boundaries. Path confinement, the read-only mode and the
destructive-command refusal are enforced by the engine, not by the interface, so
--permission-mode readonly refuses a write whether you are in a
terminal or a browser.
Quick start
Node 18+ and the standard library — nothing else to install. No npm packages, no build step, no database. The console prints a URL carrying a session token; open it once and Klaud remembers your browser.
Double-click it in Explorer.
Run it from the project folder.
Then open the URL it prints.