NewSprintEngine Studio is now open source, under the MIT licence.Star it on GitHub →

Introducingsprintengine

Manage and orchestrate all the frontier-lab CLIs you already pay for.

macOS, Windows, Linux

Draw the save pipeline
Aoife Lynch, running

SprintEngine Studio is now open source.

The whole studio is on GitHub under the MIT licence: the app, the Module SDK, and the protocol the phone speaks. Use it, change it, and ship it, including in commercial products.

Clone it and run it from source in three commands. Pull requests are welcome, and there is no CLA to sign.

sprintengine/studio on GitHub →

studio — zsh

Your agents draw it before they build it.

Canvas puts an Excalidraw whiteboard in every workspace. Each board is a .excalidraw file in your repo.

Agents draw on it through the studio's built-in MCP server. They add shapes, connect them with arrows, tidy the layout, and screenshot the result to check it, while you watch the diagram appear.

You can draw on the same board at the same time. When you and the agent touch the same shape, your edit wins.

sprintengine
Draw the save pipelineskyholdmainOpen
Aoife Lynch, running

Build the workspace you want, on the SDK the studio is built with.

The Module SDK is the same contract the studio’s own surfaces use. A module can watch and spawn agent sessions, add its own doors and pages, give your agents new MCP tools, and hook into automations. Ask an agent to build one and it shows up in the studio as a workspace of your own.

import type { RendererHost } from "@sprintengine/module-sdk"import { StandupBoard } from "./StandupBoard"export function registerRenderer(host: RendererHost) {  // A door in the sidebar, and the full page behind it.  host.registerGlobalSurface({    id: "standup", label: "Standup", Component: StandupBoard,  })}// Every agent session in the workspace, live.export function watch(host: RendererHost, workspaceId: string) {  return host.watchAgentSessions(workspaceId, (sessions) =>    board.show(sessions.filter((s) => s.isLive)),  )}// Hand a card to an agent, on whichever CLI you like.export async function assign(host: RendererHost, id: string, card: Card) {  const result = await host.spawnAgent({    workspaceId: id,    name: card.title,    cli: "codex",    prompt: card.body,    focus: true,  })  if (!result.ok) board.flag(card, result.message)}

@sprintengine/module-sdk — MIT licensed, in the studio’s repository under packages/module-sdk.

Agent sessions
Watch every session in a workspace as it runs, spawn agents on any installed CLI with a prompt and a model, and bring a session's tab to the front.
Your own doors and surfaces
Sidebar doors with full-page surfaces behind them, workspace types, panels, a row in the workspace pane beside Browser and Terminal, commands, top-bar controls and settings sections.
Tools for your agents
Register MCP tools on the studio's gateway and ship skills with your module, so every agent in the studio can use what you built.
Automations
Add your own triggers and actions, and your workspace can wake an agent on your schedule.
The workspace itself
Read the backlog, watch files, act on the Files tree, and keep your own state per workspace and across the app.
Sign it and ship it
The sprintengine-module CLI packs and signs your module. Drop the folder into ~/.sprintengine/modules, trust it once, and it loads.

Read the SDK →Module author guide

The tools we needed had to live inside the app.

Once the runtime existed, we kept wanting tools that needed a fleet of agents behind them — and they belonged in the workspace, not in a separate window.

The Module SDK exposes the session manager, automations, and the workspace pane the built-in surfaces are made of. Ask an agent to build a workspace on it and it turns up as a module in the studio: the calendar here was built that way, and drags backlog cards straight into a live agent session.

skyhold
4 running terminals1 unread message
module: calendar — building…
wren~/modules/calendar

A free, lightweight studio for the subscriptions you already pay for.

Fully customizable, and free. It runs on the frontier-lab subscriptions you already have rather than billing you at API rates.

Run Claude Code, Codex, Cursor and the rest side by side in one workspace, and close the window without losing a single session.

Tailor your development workflow with the Module SDK.

sprintengine

What's next?

Why did we build this?

  • Full control of our agent terminals. Restore every one of them when we open the app, and see the history.
  • A lighter footprint. We were tired of how much battery and usage other apps burned — Cursor, Codex, Claude.
  • Spec-driven development. Write the spec, sketch it on a canvas, and hand agents the pieces of work — while we went golfing.
  • A runtime with an SDK. So we could build our own workspaces in the IDE that integrate with the agents.

The backlog plugin tracks your epics and stories — your work, generally — inside the studio. Or keep the tracker you have: the studio talks to Linear, Jira and any other issue tracker through their MCPs.

sprintengine
Weapon recoil systemskyholdfeat/gunplay+212 -8Open
Colm Fee, running

Agents build to your design system, not around it.

Building with AI gave us front ends that never quite matched — every product, and every corner of a product, drifting a little further from the last.

The built-in design system settles what the product looks like. Build one with agents, or import one from the design tools you already use.

Once it is configured, every agent builds against it and checks its work against it — and you can add build-time checks, so drift fails the build instead of shipping.

sprintengine
fernhollow

fernhollow

~/fernhollow/design-system
Foundations2
foundations/tokens.tokens.jsonfoundations/principles.md
Components4
Dark
Create workspace
Cancel
button
4 variants · 4 states
Dark
Workspace name *
my-project
Shown in the sidebar and the switcher.
input
1 variant · 4 states
Dark
Dark — the same three panes.
Marketplace — focused
Featured 2 ready to launch
list-row
3 variants
Dark
SK-1487Inventory epic
SK-1450Loot tables honour rarity
SK-1465Save-game predicates
task-card
3 variants · 4 states
Patterns1
Selection

Selection answers “what did I pick?”. Focus answers “where am I typing?”. They are different questions and never share a treatment. Selection is a neutral fill in the row; focus is a ring on the control.

Every machine you own, one studio.

Pair your machines over the built-in Tailscale integration. Start a session on the desktop that runs the game engine, follow it from the laptop, and answer it from your phone. The work stays on your machines.

mac-studio
mbp-m3
iphone
9:41
sprintengine
Search threads
weapon recoil systemCskyholdmac-studiofeat/gunplay4h
thread list device chipskyhold-companionmbp-m3feat/device-chip+38−61m
recoil curve editorCskyholdmac-studiofeat/gunplay2h

Control it from your phone — or from an agent.

We wanted to check on a session, answer a blocking question, and open the PR from wherever we were. The studio and the phone talk over the built-in Tailscale integration — no bridge, no account in the middle.

And the whole app is drivable over the SprintEngine Studio MCP server. Anything the UI can do — spawn agents, draw on a Canvas, run automations, drive the in-app browser — an agent can do over MCP.

9:41
sprintengine
Search threads