Coder mode

Complete apps from a sentence, running live in your browser, saved to your own machine. On free-tier keys.

sarmalink — Coder modeLive preview

Build me a pomodoro timer

Here is your pomodoro timer — running on the right.

html pomodoro.html

Describe what to build next…

Waiting for the first build…

Pomodoro

25:00
StartReset

Saved to ~/projects/pomodoro.html

Runs sandboxed in your browser · Built with your keys

the loop

No editor, no build step, no deploy. The whole cycle happens inside one chat.

01

Describe

Type what you want in plain English. A pomodoro timer, a landing page, an invoice generator — one sentence is enough.

02

It builds

Coder mode writes the complete app — every line of markup, style and logic in one self-contained file. No skeletons, no TODOs.

03

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.

04

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.

package.jsonsrc/server.tspublic/index.html.env.example
$ npm install
added 142 packages in 11s

$ npm run dev
ready — listening on http://localhost:3000

Run 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

01Cerebras
02SambaNova
03Qwen
04DeepSeek
05Mistral
06Gemini
07NVIDIA
08OpenRouter
09Zhipu · Moonshot · Groq
then, and only then: OpenAI · Anthropic · xAI · Together · Fireworks · Novita

Ladder order as shipped in code. Free tiers are the providers’ own; you bring the keys.

Beta

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.

TypeScript
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:

Shell
export ANTHROPIC_BASE_URL="https://ai.sarmalinux.com/api"
export ANTHROPIC_API_KEY="<token from Settings>"
claude

Model 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.