Free and open source, MIT licensed
Start the next thing without stopping this one.
spinoff gives your project another workspace whose dev container is already built, so you or your agent can start working in seconds. Whatever you were in the middle of stays exactly where you left it.
The skill works with Claude Code, Codex, Cursor, Copilot and Gemini CLI.
~/Developer/acme (checkout-redesign) $ # halfway through a feature. A bug report lands. ~/Developer/acme (checkout-redesign) $ spinoff start ~/Developer/acme.2 $ # you're in the spinoff now. Clean checkout of main, container already built. ~/Developer/acme.2 $ spinoff open # VS Code opens acme.2 inside its dev container. # Your feature window hasn't moved.
Why "spinoff"?
When a show you like gets a spin-off, you get more of the characters you care about in a story of their own, and the original keeps airing. Same idea here. Your current work stays put in its window. The spinoff gets a copy of the code and its own dev container, and goes off to deal with that bug.
We built it because we kept getting interrupted
nerdgeschoss builds software for clients, lots of projects at once, and requests come in all day. A few times a day one of us is halfway through a feature when something needs fixing right now. We wanted to say "spin this off" and keep going, so we wrote a tool for it.
We use it every day. It costs us nothing to run, so you can have it too.
How parallel work usually goes
One checkout, one database
Fine, until a second task shows up. Or a second project.
So you add a git worktree
Now you get to install everything again. For every single worktree.
So you add a dev container
Setup runs by itself now. It still takes about 15 minutes before you can type a line.
Or you spin it off
spinoff keeps worktrees and their containers around between tasks and hands you one that's already built. You're working in seconds.
Fast, because nothing gets rebuilt
The customer is on the phone asking when the fix will be live. That's a bad moment to watch a dev container build. So spinoff doesn't build one. It hands you the one it built last time.
A new worktree with a fresh dev container
about 15 minutes
spinoff start
seconds
From our own client projects. Yours depends on how much your setup installs.
Worktrees get reused
Releasing a spinoff cleans it up and puts it back on the shelf. Installed dependencies and other ignored files stay where they are, so the next task skips the fresh install. Worktrees also share one repository, so nothing gets cloned.
Containers stay built
Release only stops the container. Starting a stopped one takes seconds. Building one from scratch takes the coffee break you didn't have time for.
A handful of commands, and you'll mostly use two
Run them from inside any project that has a dev container. That's the whole setup.
spinoff startFinds a free spinoff of the project you're in, or makes a new one next to it, starts its container and drops you into its folder.
spinoff openOpens it in VS Code, already inside the container. No "Reopen in Container" dance.
spinoff exec npm testRuns a command inside the spinoff's container, so installs and test runs happen in there and not on your machine.
spinoff releaseHands the spinoff back. If there's unpushed work in it, spinoff says no. Otherwise it tidies up and stops the container, but keeps it built so the next start is quick.
There's also spinoff list for when you've lost track. You won't need it often, since every spinoff gets its own window.
Stuff you don't have to do
Add a config file
There isn't one. If the project has a dev container, you're set up. If it has a bin/setup script, spinoff runs it. If not, it doesn't.
Let a tool name your branches
You start on a clean checkout of the default branch. Trunk-based, Gitflow, ticket numbers: branch however your team does, or let your agent do it.
Share a database
Each spinoff runs its own containers. When an agent resets its database, it resets its own and yours is still there.
Clean up after it
spinoff keeps no state of its own. Who has which spinoff lives in git's worktree locks, so if you ever uninstall it, you're left with plain git worktrees.
Your agent can spin off too
spinoff treats your coding agent as a user, same as you. Ask it to spin a bugfix off while you keep going, or let it decide on its own that something deserves its own space.
The agent skill teaches it the commands. The first time it runs, it installs the CLI with Homebrew, so you don't have to.
Works with Claude Code, Codex, Cursor, Copilot and Gemini CLI.
Checkout emails are going out twice. Can you spin this off and fix it? I'm still on the redesign.
Started acme.2 from main and I'm working there. Your redesign branch is untouched. I'll make a fix branch once I've found it.
From people who use it
[placeholder quotes: replace with real ones before launch]
"A client reports a bug while I'm halfway through a feature. I spin off a bugfix, VS Code opens in a container that's already built, I fix it, and my feature never notices I left."
"I run three agent sessions on the same repo. Each one gets its own container and its own database, and none of them has touched mine."
"Every new worktree used to mean a long wait for the dev container to build. Now a fresh one is ready before I've finished reading the ticket, and we didn't add a single file to the repo."
Questions
Is a spinoff a sandbox?
No. It's as isolated as Docker is, which isn't much if something really wants out. What you get is fewer accidents. An agent that drops its database drops its own, not the one you're working in.
Will it create a branch for me?
No, and that's on purpose. Every team names branches differently and we'd get yours wrong. You start on the default branch and take it from there, or your agent does.
What do I need?
Docker and a project with a dev container. That's it.
What does the agent skill install?
The skill, and the first time it runs, the spinoff CLI through Homebrew. Depending on your agent's settings, it will ask you before it does that.
Can I lose work when I release a spinoff?
spinoff won't release one that has uncommitted or unpushed changes in it. It tells you what's still there instead.
What does it cost?
Nothing. It's MIT licensed and the code is on GitHub.
Your next interruption is probably already in your inbox.
Might as well be ready for it.