the loop
No editor, no build step, no deploy. The whole cycle happens inside one chat.
Describe
Type what you want in plain English. A pomodoro timer, a landing page, an invoice generator — one sentence is enough.
It builds
Coder mode writes the complete app — every line of markup, style and logic in one self-contained file. No skeletons, no TODOs.
It runs live
The app opens beside the chat in a sandboxed preview. Click around, switch to phone width, open it in its own tab.
Iterate by talking
Make the ring gold. Add a long-break cycle. Every follow-up returns the full updated app, re-run instantly.
local workspace
No cloud project, no export dance. Built apps write straight into a folder you pick on your own machine.
Save single apps as .html files, or whole full-stack projects with nested folders and a package.json.
Open a saved app back into the preview any time and keep iterating — the workspace survives the chat.
Nothing is written without your click, into a folder you picked in the browser’s own folder dialog.
Works in Chrome, Edge and other Chromium browsers on Windows, macOS and Linux. Safari and Firefox fall back to a normal download, so every file still reaches you.
Saved from chat
- ~/projects/
- pomodoro.html
- landing-page.html
- invoice-app/
- package.json
- src/
- server.ts
- public/
- index.html
One click connects the folder. Saved apps re-open from the preview’s file menu; iterating on a saved app overwrites it in place, Lovable-style.
full-stack
Servers, APIs, database-backed apps — coder mode emits the whole project, not a sketch of one.
Ask for anything a single HTML file cannot hold and the answer arrives as a complete file tree: every file in its own path-tagged code block, from package.json to the last route — followed by the exact commands to run it.
sarmalink saves the tree, nested folders and all, into your project folder. Your terminal runs it — sarmalink never hosts or executes servers for you. Follow-ups re-emit every changed file in full, so the folder on disk is always the current version.
Every block renders with dependency-free syntax highlighting — TypeScript, Python, Bash, JSON, HTML, CSS, SQL, Go, Rust — plus proper diff views, streaming-safe as the code arrives.
$ npm install
added 142 packages in 11s
$ npm run dev
ready — listening on http://localhost:3000Run instructions ship with every project — copied verbatim from the answer.
free first
Coder mode opens with Cerebras Qwen3 Coder 480B and works down a ladder of free-tier engines. Paid keys sit at the very end — only ever tried after the free ones.
480B
Parameters in the lead coder model
11
Engines tried before any paid key
£0
Charged for inference
Ladder order as shipped in code. Free tiers are the providers’ own; you bring the keys.
for your editor
Your personal API turns the free-first coder ladder into an endpoint any coding tool can call.
Cursor, Continue, any OpenAI SDK
The endpoint is OpenAI-compatible, so anything that accepts a custom base URL works as-is. Point it at /api/v1 with a token from Settings → Personal API.
import OpenAI from 'openai'
const client = new OpenAI({
baseURL: 'https://ai.sarmalinux.com/api/v1',
apiKey: process.env.SARMALINK_TOKEN,
})Claude Code
sarmalink also speaks the Anthropic Messages format. The Anthropic SDK appends /v1/messages to its base URL itself, so the base URL ends at /api — not /api/v1:
export ANTHROPIC_BASE_URL="https://ai.sarmalinux.com/api"
export ANTHROPIC_API_KEY="<token from Settings>"
claudeModel pinning, auth details and the current beta caveats live in the coding-tools docs
The deal
You describe.It builds.It runs.You keep it.
The apps live on your disk, the previews run in your browser, and the inference runs on keys you own. Nothing to export, nothing to cancel.
faq
It takes a free key and about sixty seconds.