focusvibe
v0.4.1
Published
Direct a fleet of AI coding agents from one calm board. No terminal.
Maintainers
Readme
FocusVibe
Control a fleet of AI coding agents from a kanban board.
Install
npx focusvibeSupported: macOS (Apple Silicon and Intel) and Windows (x64). Linux is not supported yet.
Not npm install focusvibe. What is published here is a small launcher, not
the app. Installing it copies a few kilobytes into node_modules and stops
there, with nothing to open. Running it with npx is what downloads the real
build for your machine, checks it against the checksum published with the
release, and starts it. If you already ran npm install focusvibe, nothing is
broken and nothing needs cleaning up: run npx focusvibe.
FocusVibe is a desktop app that hands coding tasks to AI agents and shows you what they wrote. You write a task, an agent does it in its own copy of your project, and you read the diff it produced. Several can work at once, on a board instead of in a terminal.
It runs on macOS and Windows, and it works where your code already is. Your projects, tasks and history stay on your computer; the only thing that leaves it is the agent's own traffic to the AI provider you connected.
Agents run on your AI account. FocusVibe sells no tokens, adds nothing to that bill, and never sees it.
What you need
- Node 18.17 or newer, to launch it the first time. On first launch the app offers to install itself where your system keeps applications, and updates itself after that, so you only need Node once.
- An AI account, connected in Settings. Claude today, either your Max or Pro plan through Claude Code or an Anthropic API key. ChatGPT soon. Keys and tokens are encrypted with your operating system's keychain and never leave the machine except to the provider itself.
A project is any folder on your computer. Connect one that git has never seen and the app offers to set git up in it, in one click and without an account, because that is what lets every task work in its own copy. Decline and it still runs; the agent then edits that folder directly.
First launch asks you to sign in with Google and enter a beta key, because FocusVibe is in beta and access is invited rather than open.
How it works
The board
Four columns, and a card moves through them left to right.
| Column | What it means |
| --- | --- |
| To do | Written, not started. The card reads Waiting. |
| In progress | An agent is working. The card says what it is doing right now, and Watch unfolds the whole step by step feed: every command, file and search. |
| Review | Either it finished and wants reading, or it stopped to ask you something. A card that reads Asking you is waiting on an answer and nothing else is happening. |
| Done | You accepted the work. |
Dragging a card into a column does what that column means, so dropping one on In
progress starts it. Press N anywhere to write a new task. A task that fails
drops back to To do with the reason on the card, and starting it again reuses
the working copy it already had, so a failed attempt keeps the commits it had
already made.
Every task gets its own copy of the project
This is the part worth understanding, because everything else follows from it. When a task starts in a project that uses git, FocusVibe cuts it a separate working copy on its own branch. The agent works there. The folder you have open in your editor is never touched.
That is what makes the rest safe. Several tasks can run at once without standing on each other, a bad attempt is deleted rather than unpicked, and you can keep writing code in your own checkout while agents work in theirs.
The catch is the one everybody hits first: a copy only contains what is in
git. A .env you sensibly never committed will not be there, and the agent
will fail for a reason it cannot see. Name those files in project settings and
they are carried into every copy.
A folder that does not use git has no copy to cut, so the agent works in the folder itself. It still works, but nothing is held back from it: no branch, no undo, and two tasks at once would be editing the same files.
You read a diff, not a transcript
When an agent finishes, its task moves to Review and you get the change itself, read the way you would read a pull request. Files you have looked at fold away, so a large diff stays a list of what is left.
Clicking a line leaves a note on it. Sent together, those notes become the agent's next instruction, each one carrying the file and the line it was pinned to. That is the part that beats typing into a chat box: you never describe from memory which line you meant.
A diff is computed with git and no other way, so a project without it has none to show. The review is then the agent's own account of the work, and Watch lists every file it touched.
Done hands the changes back, or opens a pull request
Accepting a task puts its changes into your project on the branch you are already on, ready to commit, and cleans the working copy up. Nothing is committed and nothing is pushed: the task's title and description are waiting as the commit message, and when you commit and what you say is yours. That is the default. In a folder without git there is no branch and no separate copy, so the work is already where it was written and Done simply files the task away.
Turn on developer mode for a project and Done pushes the branch and opens a pull request instead, so it can be reviewed before it lands. That needs a GitHub account connected in Settings, and the switch says so rather than quietly keeping the work locally, because a button that says pull request must not do something else.
A task in Done can be reopened. The same agent picks up on a fresh branch off your current project state.
Telling it about your project
Four optional settings per project, from the gear beside it in the sidebar. Left empty they change nothing, and each one replaces a guess the agent would otherwise have to make.
| Setting | What it is for |
| --- | --- |
| How to check the work | Your project's own check, for example npm run typecheck, named to the agent as the way to be sure a change is good. Without one it invents a way, which is slower and costs more tokens. The highest value box on the page. |
| Files to bring along | One path per line. Whatever the project needs but does not commit, usually .env. Files git already tracks are ignored here, so a local secret can never be merged back in by accident. |
| How to get ready | A setup command run once by FocusVibe on each new copy, before the agent starts, for the projects that need a step to become workable. It costs no tokens: the agent never sees it happen. |
| Anything the agents should know | Conventions, what to leave alone, what "done" means here. Written once, carried into every task. Most of what makes an agent's output wrong for a project is context it had no way to have. |
Models, effort and cost
Three settings that stack, each with a default and each overridable per task.
| Setting | What it does | | --- | --- | | Model | Which model runs the task. | | Reasoning effort | How hard it thinks before acting. The single largest driver of what a task costs. | | Fast mode | Claude Code's high-speed setting for Opus. Same model and same quality, up to about 2.5 times faster, at roughly double the token price. |
Every run records what it consumed, the same numbers Claude Code shows in
/cost, so a task here can be compared to a session there. The toolbar shows
what a project has spent, and appears only once something has been spent.
Before you run the first one
Agents work without asking permission. They edit files and run commands on your computer at any time. That is the point of the app, and it is the thing to know before the first one starts. Review what they write. They still make mistakes.
A fleet adds up. Several agents thinking at once spends real money on your own account, faster than one session in a terminal does.
Where things are kept
| System | Folder |
| --- | --- |
| macOS | ~/Library/Application Support/FocusVibe |
| Windows | %APPDATA%\FocusVibe |
That folder holds the local database of your projects, tasks and runs, plus your encrypted credentials. It is the only state the app has, it survives every update, and deleting it resets FocusVibe to a fresh install without touching any of your code.
Command line
The app installs and updates itself, so these are for when something needs a nudge.
npx focusvibe --where print where the app is installed
npx focusvibe --reinstall download this version again from scratch
npx focusvibe --version print the version