Docs
Windows 10/11, 64-bit. macOS and Linux aren't built yet.
Install
Two ways, same result. Flint installs per-user into %LOCALAPPDATA%, so nothing asks for admin.
From a terminal:
irm https://flint-83v.pages.dev/install.ps1 | iex
That resolves the newest release, downloads the installer, runs it silently
and launches Flint. Or download the .exe
and double-click it.
Sign in
Flint uses a device-code flow, the same shape as the GitHub CLI. The app shows you a code, opens your browser, and waits:
- Flint displays a code like
KTPD-3M8Rand opens/activate. - You enter your email there and get a 6-digit code back.
- Enter it, and the app picks up its token on its own — nothing to paste.
The token lives in account.json under the app's user-data folder.
You can see it and your spend any time on your account page.
Signing in is optional. It exists so you don't have to hold a provider key. If you'd rather use your own, skip it entirely — see bring your own key.
Your first task
Open a project folder and describe the outcome, not the steps. Flint reads files, runs commands and reports what it did:
› read the failing test and fix it
▸ reading src/queue.test.ts
▸ running npm test -- queue
1 failing — retry() resolves before the backoff elapses
▸ editing src/queue.ts
▸ running npm test -- queue
4 passing
It works best when it can check itself. A task with a test, a build or a linter attached to it comes back verified rather than merely plausible.
Browser control
Flint can drive the Chrome you already have — signed in, with your real session — rather than a headless browser that knows nothing about you. It's opt-in and takes one minute:
- Open
chrome://extensions. - Turn on Developer mode (top right).
- Load unpacked → pick the
extensionfolder in Flint's install directory.
The app hosts a small HTTP bridge on 127.0.0.1:8790; the
extension long-polls it and runs commands in your active tab. Supported
commands are navigate, read, click
and type.
curl -s -X POST http://127.0.0.1:8790/cmd \
-H "content-type: application/json" \
-d '{"command":"read"}'
The bridge is loopback only — it binds to 127.0.0.1,
so a web page you visit cannot reach it. Only software already running on
your machine can.
Bring your own key
Signed out, Flint talks to your provider directly and we're not in the
path at all — nothing is metered, nothing is logged by us, and there's no
allowance to run out of. Put the credentials in .env:
DEEPSEEK_API_KEY=sk-...
DEEPSEEK_BASE_URL=https://api.deepseek.com
Any OpenAI-compatible endpoint works — OpenRouter, a local
llama.cpp server, your own gateway. Point
DEEPSEEK_BASE_URL at it.
Signing in wins. When you're signed in, Flint's credentials
override the ones in .env, so calls go through the Flint API
and count against your allowance. Sign out to go back to your own key.
Models
Verified working today:
deepseek-v4-flash— the default. Fast and cheap; right for most work.deepseek-v4-flash-0731— pinned older flash build.deepseek-v4-flash-vision-exp— reads images.deepseek-v4-pro— slower, stronger on gnarly reasoning.deepseek-v4-pro-0813— pinned older pro build.
Change model in the app's settings. Rates for each are on the pricing page.
Settings are written to ~/.dsh/settings.yaml when you change
them. Don't hand-edit that file while Flint is running — it gets
rewritten underneath you. Use the settings UI.
Usage & billing
Flint bills per token at the model's rate plus 25%. There's no subscription and no seat count; a month you don't use costs nothing.
- $0.50 of usage is free each month, resetting on the 1st.
- The allowance is a hard cap. At the limit, calls return a quota error rather than quietly charging you.
- Your spend is on your account page, updated as tasks finish.
The reason the proxy exists at all: the provider key stays on our server and never ships inside the app. Your Flint token is stored as a SHA-256 hash, so a database leak yields nothing usable, and a leaked token costs you an allowance rather than exposing a key.
Updates
Two separate channels, deliberately:
- The app updates itself in the background and applies on restart.
- The engine — the DeepSeek Harness underneath — is offered, never forced. It's developer-preview software that ships breaking changes, so Flint tells you one is available and lets you pick the moment. Nothing swaps underneath you mid-task.
Troubleshooting
Stuck on "Warming up"
The engine didn't start. It runs on your system Node, not the one inside
the app, and it needs Node 22.6 or newer. Check with
node -v; if it's older, or missing, install a current Node and
restart Flint.
Browser commands do nothing
The extension only talks to a running Flint. Confirm the bridge is up —
curl -s http://127.0.0.1:8790/ should list the commands. If it
refuses the connection, Flint isn't running. If the extension is loaded but
idle, reload it from chrome://extensions after starting Flint.
"quota_exceeded" on every message
You've spent this month's allowance. It resets on the 1st. Until then, use
your own key — sign out and set
DEEPSEEK_API_KEY.
The sign-in email never arrives
Email delivery is still being set up, and codes currently don't reach every address. If yours doesn't arrive, the activation page shows the code on screen instead so you can finish signing in.