npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

focusvibe

v0.4.1

Published

Direct a fleet of AI coding agents from one calm board. No terminal.

Readme

FocusVibe

Control a fleet of AI coding agents from a kanban board.

Install

npx focusvibe

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