Skip to content

Run several agents on one repository.

A session in Skipper is one tab. It holds an agent running in a terminal, the git worktree and branch the agent works in, and the pull requests that come out of it. Open as many sessions as you need, on one repository or several, and switch between them from the sidebar.

A worktree for every session

When you start a session, Skipper fetches the repository's default branch and creates a git worktree and a branch from it. The agent works in that directory, so several agents can change the same repository at once without overwriting each other, and your own checkout stays as it was.

Each session also gets its own temporary directory and its own block of 100 network ports, exported as SKIPPER_WORKSPACE_PORT, so two sessions can run the same dev server without a port conflict.

Everything the agent does is an ordinary git branch. Open it in your editor, run its tests, or push it yourself.

Start a session

Press ⌘T and describe the change. The composer sets up everything the agent starts with.

  • Repository. Any project you have added, grouped by GitHub organization. Add a local folder with ⇧⌘N, or pick one of your GitHub repositories on the Home tab and Skipper clones it.
  • Agent and account. Claude Code, Codex, or OpenCode, plus Pi and Antigravity when they are installed, and the account the agent runs as.
  • Model and effort. The agent's models and reasoning effort, with Codex's fast mode.
  • Permissions. The agent's own approval modes, such as Claude Code's Accept Edits and Auto or Codex's Auto review. Press ⇧⇥ to cycle through them.
  • Plan mode. Claude Code and OpenCode can plan before they change anything.

Type @ to mention files, directories, other sessions, or MCP servers, and / for the agent's skills and commands. Drag in files, paste images, video, or long text, or hold ⌃⌥M to dictate. Dictation runs on your Mac.

Comment on screenshots and recordings

Open an attached image, video, or text file to comment on a point, a region, a moment, or a range of lines. Add to Composer turns each comment into prompt text that points the agent at the file and the exact place or time you mean.

Scripts for each repository

Add a skipper.json file to a repository to give its sessions the commands they need. The setup script runs when a session's worktree is created, so dependencies are ready before the agent starts. The other scripts appear in the Run menu (⌘R) and run in the terminal drawer under the agent.

{
  "scripts": {
    "setup": "npm install",
    "build": "npm run build",
    "lint": "npm run lint",
    "run": "npm run dev"
  }
}

Duplicate and archive

Duplicate Session (⌘D) starts a new session from another session's current state, uncommitted changes included, in a worktree of its own. Use it to try a second approach without losing the first.

Archive Session (⇧⌘A) removes the session's worktree and local branch when the work is done. Skipper records the branch's last commit, so you can unarchive the session later. If the worktree has uncommitted changes or commits that have not landed, Skipper stops and tells you instead of archiving. Archived sessions are deleted after 30 days.

Names for every session

Skipper names a session from its first prompt with Apple Intelligence, on your Mac. Rename it yourself, or ask Skipper to rename it from the conversation so far. Every session also has a codename, such as grainy-tilefish, which names its worktree directory and its branch.