Open-source, self-hosted AI agents in one binary

Your own self-hosted team of AI agents

They share chats, pass work to each other and get it done on their own, on a schedule or while you're away. It runs on your laptop or a VPS.

Free, for Apple silicon and Intel. Also for Windows and Linux, in beta.

Free, for 64-bit Windows. It isn't signed yet, so Windows warns the first time: click More info, then Run anyway. Also for Mac and Linux.

Free. A .deb for Ubuntu and Debian on x86_64; other distros, the AppImage (how to install). Also for Mac and Windows.

First time on a Mac?macOS asks once, because kwant isn't notarized by Apple yet.
  1. Drag kwant to Applications and open it. When macOS says it couldn't verify it, click Done.
  2. Open System Settings › Privacy & Security and scroll down to Security.
  3. Click Open Anyway next to “kwant” was blocked, then Open Anyway again, and enter your Mac password or use Touch ID.
A mock-up of the three macOS steps: the “kwant” Not Opened alert with Done marked, System Settings › Privacy & Security, and the Security row “kwant” was blocked to protect your Mac with Open Anyway marked.

You only do this once. On macOS 14 or earlier, right-click kwant in Applications and choose Open instead.

SoonA one-line Terminal install that skips this step.

0.9.4 released Nov 12 40 releases since Oct 25 AGPL-3.0, open source

5 bots working Click the town to hand out a task

A normal day with kwant

Three things you'll see in the app most days.

Ask once, the team passes it on

Bots share chats and hand work to each other with an @mention. You get one answer back.

Keeps going while you sleep

Say "every morning" and the bot sets up the routine. You come back to what changed.

Only risky steps ask first

Ordinary work just runs. Something risky, like a push, a network call or a change outside the bot's folder, shows you exactly what will happen first. You can switch that off too.

Spaces & accounts

Keep work, side projects and home apart

Each space has its own bots, chats, routines and accounts. Nothing leaks between them.

A space for each part of your life

Give it a name, an icon and a colour. Switch with ⌘/Ctrl + 1–9, and each space opens where you left it.

How spaces work →
The space rail with three spaces, Trailhead, Pixel Quest and Home, each with its own icon and colour. Trailhead is open on #general with a weekly digest posted by a routine.

Every account, side by side

Claude, Codex or Grok logins, API keys and your own server. When one runs out of usage, the turn moves to the next and the chat says so.

Accounts & profiles →
Settings, This space, Accounts: the Order to use list. Work login (Claude) and ChatGPT Plus (Codex) are ready, Personal Max is out until 15:03, a spare Claude API key is off, Ollama on the Mac can't connect and a Team gateway is ready. Below, under Not in the order, This machine's Claude and Codex are signed out and Grok is not installed.

Your team

A real team, not another chat tab

Each bot has its own role, voice and model, and knows who else is in the room.

Handoffs

Designer answers, then passes the check to QA with an @mention.

The Product team chat. A question about adding a trip waitlist, a collapsed "Team discussed, 4 turns" fold, and TechLead's summary covering flow, backend, hold length, UI and the release gate.

Team discussions

The lead runs a short discussion and posts one summary. Open the fold to read every turn.

Approvals

Allow once, always allow or deny, with the full arguments in front of you.

New teammates

Pick a preset like Security, Research or Chef. Name, role, avatar and voice fill in.

How it compares

Other AI tools say "done". kwant shows it.

Chat apps and agent frameworks can do the work. kwant is built to prove it: checked results, quoted sources, and nothing paid without you.

Kinds of tool, not named products. Each one varies; check its own docs. Flight School and the Truth Ledger are opt-in.
kwantChat assistant appsAgent frameworks
"Done" means it was checked Yes (a card turns Verified only when kwant runs the check itself) No (you take the model's word for it) You build it (write your own evals)
Facts open at the exact quote Yes (no quote on the page, no claim) Partly (a link to the page, rarely the words) You build it
Conflicting facts wait for you Yes (Truth Ledger shows both; you keep one) No (one answer, picked for you) You build it
Payments always ask Yes (even behind a plain "Continue") Varies (depends on the app and mode) You build it
Keeps working while you're away Yes (routines, follow-ups and an Inbox of what happened) Partly (some have scheduled tasks) Partly (you host and schedule it)
Autonomy you can dial up Yes (Flight School: bots earn tiers per kind of work, only you grant them) No (one setting for everything) You build it
The right bot answers, and says why Yes (picks the bot, model and effort) No (one assistant per chat) You build it (you write the routing)
Any model, with failover Yes (Claude, Codex or Grok logins you already pay for, API keys, Ollama or any OpenAI-compatible server) No (their own models) Yes (you wire up each provider)
Separate spaces for work and home Yes (each with its own bots, accounts, routines and approval rules) Partly (projects, under one account) You build it
Light to run on your Mac, Linux or server Yes (one binary with the app and database built in) No (the provider's cloud) Varies (you assemble the runtime, queue and database)
No code needed Yes Yes No (it's a library you code against)
PriceFree and open source; you bring the model accountsFree tier or a monthly planFree library, plus your hosting and models

While you're away

It keeps going when you close the tab

Routines run on a schedule, bots check back on their own, and kwant keeps track of what's still open.

Say "every morning", get a routine

The bot sets it up itself, with Undo, Edit and Pause on the card. Or make one: daily, weekly, every few minutes, or a cron rule.

Routines & bot actions →
The Inbox since you last looked. Waiting on you: Ann's high-risk task Speed up the search box, marked Needs you with medium confidence, and her question about the pack size guide with cm, inches and Both buttons. Nothing failed or finished, and one task waits in To review. On the right, the search task's verdict says it couldn't time the full catalogue, with Approve, Send back and Roll back.

Inbox

What happened while you were away: what's waiting on you, what finished and what got stuck, on one page.

Loose ends. Designer has waited four days for your pick of a hero image, and you promised Mara a press kit by email. Each case quotes the message it is based on and has a draft reply.

Loose ends

Finds the reply you owe in chats, email and GitHub, and drafts it. It never sends.

A scanned letter from a fictional water company next to what kwant read from it: who it's from, what they want and the deadline of November 5, each with the quote it came from and editable.

Letters

Photograph a bill or notice. kwant pulls out the deadline and amounts and reminds you.

Loose ends & letters →

New in 0.6.9

You'll know when a bot needs you

A pill slides in when a bot in another chat waits on you, and the tab title counts what's waiting. When a bot needs a sign-in, you take over its browser.

A pill, wherever you are

An approval, a question or a sign-in slides in at the top for a few seconds. Click it to go there. On a phone too, and under the Mac app's menu-bar icon.

What's new in 0.6.9 →

Take over to sign in

The bot posts a sign-in card. Open the page, sign in yourself, and Done hands the browser back. Bots never ask for a password in chat.

Sign-in & take over →
Close-up of Designer's Sign in needed card: sign in to TikTok as @trailhead.trips on tiktok.com, with Open browser, Done, I'm signed in and Skip, and the line Designer is paused and waiting for you.

Sign-in card

One card per site. Skip, and the bot says what it couldn't do.

The same Needs you pill on a phone, at the top of the #design-review channel.

On your phone

The same pill at the top of the screen.

Close-up of TechLead's approval card for create pull request from github, with Deny, Allow Once and Always Allow, and below it the working line: TechLead is using create_pull_request (github), 0:08.

What it's doing

A line above the message box says what the bot is using right now.

New in 0.6.11

Answer with a tap, reply, solve the human check

Every finished bot message has 👍, 👎 and Reply. When a bot asks you something, the thumbs answer it. When a site asks if you're human, the bot hands the check to you.

Yes, go ahead

When the bot's newest message asks you something, 👍 means Yes, go ahead and 👎 means No; hover a thumb to see which. Pick one and the bot carries on without you typing. Anywhere else, a 👍 or 👎 is feedback the bot reads next time.

What's new in 0.6.11 →
Lead's release notes with Reply pressed: the message box shows a Replying to Lead chip quoting Here are the release notes, and the reply Put the waitlist first in the email version is typed below it.

Reply

Reply quotes the message in the box, so the bot knows which one you mean.

Close-up of a Human check needed card from Researcher: gearhub.example is showing a CAPTCHA to the bot browser, with Solve it, Done, I solved it and Skip.

Human checks come to you

A CAPTCHA stops the bot and a card in that chat asks you to solve it. Once it's solved, the bot carries on by itself; kwant never solves one itself.

On a phone, Lead's question Shall I publish them now? with Copy markdown, thumbs up, thumbs down and Reply under it.

On your phone

The same thumbs and Reply under each answer.

Up and running in three steps

You need Rust and Node.js to build it, and one AI account.

  1. 1

    Build and run

    make run

    The web app opens on your machine. On a server, open the link it prints once.

  2. 2

    Add an account

    Claude CodeCodexGrokAPI key

    Use a CLI you're already signed in to, or paste a key. Add as many as you like.

  3. 3

    Ask your team

    "Every weekday at 9, check the deploys."

    The bot answers, or sets up a routine with an Undo button.

Read the quickstart →

Give it a try tonight

One command to start. Your bots, your accounts, your machine.

git clone https://github.com/alexsergivan/kwant && cd kwant && make run

The Mac app isn't notarized by Apple yet, so macOS stops it the first time: how to open it. Also for Windows and Linux, in beta.

The installer isn't signed yet, so Windows warns the first time: click More info, then Run anyway. Also for Mac and Linux.

A .deb for Ubuntu and Debian, or the AppImage for other distros (how to install). Also for Mac and Windows.

kwant runs on coffee and GitHub stars. Like it? Toss one our way.

Star on GitHub