Pacenote

How it works

Pacenote runs on your Mac. It keeps a list of what people ask of you and hands each task to Claude Code, Codex or opencode; Pace, if you turn it on, answers you in Slack. What it does is kept in ~/.pacenote.

The loop

Work reaches you in Slack threads and gets done in Claude Code, Codex or opencode. Each keeps its own history, so you paste the thread again, explain it again, and hunt for where you stopped. Pacenote keeps each task's history together on your Mac, whichever tool did the work, and on your other Mac too if you use two.

  1. AskedA Slack thread and its link
  2. On your listCollected into Todo, with a summary
  3. Picked upWith the thread and how related work ended
  4. Worked onYour sessions and the branch
  5. Wrapped upHow it ended, and a reply to send

Why the name: in rallying, the co-driver reads the pace notes so the driver can keep their eyes on the road. You drive. Pace reads the notes.

An answer, step by step

  1. You mention @Pace. The mention reaches the app on your Mac over Slack's Socket Mode, a connection your Mac opens, or through your team's hub.
  2. Pace checks that it is you, in a public channel, then reads the thread and its files.
  3. It runs claude or codex on your Mac with read-only access to one folder, or in a Linux VM thrown away after the answer.
  4. It strips its own secrets from the answer, replies in the thread, and records every step.

One answer, end to end

Slack Your workspace

@Pace check web-01Your mention in #ops
Socket ModeEvents over a connection your Mac opens
Web APIReplies, reactions, files
PaceLikely cause: the 09:02 deploy

Your Mac Pace, run by the app

messengers/slackSlack events in, answers out
mention pipelineWho may ask, the thread, its files
It is you · a public channel
reasoners/claude, codexCalls the CLI, reads its steps
sandbox/vmA Linux VM per answer
Its own secrets taken out
~/.pacenoteRun history, tasks, settings

Built-in sandbox pacenote-vm

reasoner VMclaude or codex · read-only image · no network device
proxy in PaceAllowed domains only
api.anthropic.com
example.com
ops-brokerSSH, k8s, GitHub, Jira: the credentials stay here
Gone after the answerNothing kept in the VM
The whole architecture, in seven diagrams

On your Mac or in a sandbox

Pace runs the claude or codex CLI you are signed in to. On your Mac, the CLI gets read-only access to one folder you choose, never your credential folders.

In the built-in sandbox, each answer runs in its own Linux VM, started with Apple's Containerization framework. The VM has no network device of its own, reaches only the domains you allow through a proxy in Pace, and is thrown away after the answer. There, diagrams and charts come back as images, and Pace can add, list or close your tasks. The sandbox needs macOS 15 or later.

The sandbox in detail

Your Todo

Press Collect now and Claude Code reads Slack through your claude.ai Slack connector, or Codex through ChatGPT's Slack app, read-only, one taking over when the other is at its limit. You get a list of what people asked of you, by your @mention, the other names people call you, or a user group that means you, and of what you said you would do.

Anything it is unsure about waits under Maybe, and no message becomes a task twice. Collecting is off until you turn it on.

Your tasks in detail

Handing a task to Claude Code, Codex or opencode

Continue in Claude Code, Codex or opencode opens a terminal session with the task, the thread, what Pace found there, and how related work ended last time, even when that work was done in another tool. Or the Claude app or the Codex app opens with all of it written in, for you to send. opencode, with no app to write it into, opens in the terminal.

A session you start yourself in a repository is told its open tasks from the start, and Todo shows the work as it happens. When it is done, the task closes with a note on how it ended and, if someone is waiting, a reply for you to send.

Moving between your Macs

Pair your Macs once, with no Slack app: click Add a Mac on one, choose From your other Mac in the other's first run (or Pair in its Settings > Macs, if it is set up already), check that both show the same six digits, and Allow. They find each other on your network, or by address over Tailscale.

Your Todo, your decisions, the work log, recaps and areas are the same on both, merged directly between them as they change. A session stays on the Mac it runs on, and the other one offers to start one of its own.

With your own Slack app, one of them holds Pace's connection to Slack: the one you're using. Lock it, put it to sleep, close its lid or leave it for five minutes, and the other one takes over. Use both, and Pace stays where it is. The next Mac connects before the last one lets go, so no mention is missed or answered twice. Macs set up with the same Slack app find each other with nothing to pair; a new one can take that app from the one you have, with Connect to your other Mac in Pace's setup.

The Macs know each other by a key: the one Add a Mac made, or one from the Slack app they share. They take connections only from your own networks, and Pace moves only between Macs of the same Slack app.

Your Macs

Teammates and the hub

Pace answers only you. Anyone else who mentions it gets a note only they can see. Teammates each run their own Pace, on their own Mac and login.

A team can share one Slack app through a Pacenote hub, a small server of its own. The hub sends each mention to the Mac of the person who wrote it, where Pace answers with that person's login, and the Slack tokens stay on the hub. Nobody else has to create a Slack app.

That is the difference from an assistant a company adds to Slack: that one is set up by an admin and runs under the company's account. Pace is one you set up yourself, on your Mac, with your own plan.

One Slack app for the team, each mention answered on its owner's Mac

Slack Your workspace

@Pace which retries changed in #482?mina's mention in #payments
@Pace check web-01hyun's mention in #ops
@Pace sum up this threadjun's mention in #design
One Slack app, for everyone

Hub A Linux server of your team's

The Slack app's tokensOnly here: no Mac ever gets one
Sends each mention homeTo the Mac of the person who wrote it
One thread, for 2 hoursA Mac reaches only the thread it was sent
Keeps only the paired Macs

Teammates' Macs Their own Pace

mina's MacAnswers mina, with claude
hyun's MacAnswers hyun, with codex
jun, not pairedGets a note only jun can see
Logins, runs and Todo stay here

mina's mention goes only to mina's Mac, and Pace answers in the thread with mina's own login.

Set up in four steps

  1. Create the Slack app from Pacenote's manifest, with Socket Mode. Moving your own app to the hub? Use its tokens.
  2. Copy one command in Settings > Messengers > Slack, under "No hub yet?": the address members will use and who can use it.
  3. Paste it on the server. It asks for the two tokens there, starts the hub with Docker and waits for it. Your Pace switches to it on its own.
  4. Teammates pair. Each enters the hub's address and sends the code Pacenote shows to @Pace in Slack.
  • On your own network

    http://10.0.0.5:8790

    Plain http works at a private address or a name only your network knows. The hub token and the threads then cross that network unencrypted.

  • Anywhere else

    https://pacenote-hub.example.com

    The hub listens on the server itself, and Caddy or another proxy in front serves it over HTTPS.

What the hub sees and keeps

Sees, on the way
Mentions, their threads and Pace's answers, as Slack's own servers do.
Keeps
The Slack app's tokens, and the paired Macs as hashes of their tokens.
Never has
Anyone's AI login, runs or Todo. Those stay on each Mac.
The team hub

Also in Pacenote

  • Recap your day, week or month

    A day as a standup, a week by area with what carries over, a month by where the work went. Copied as text, ready to post.

  • See the areas you work in

    Pacenote sorts your tasks and your Claude Code and Codex sessions into the areas you contribute to. You correct what it gets wrong.

  • Let your AI tools look things up

    Pacenote's MCP server lets Claude Code, Codex, opencode and other MCP clients read what Pace did and what is on your list. Off until you add it, in one click.

Try it on your Mac

brew tap ashon/tap brew trust ashon/tap brew install --cask pacenote
Setup steps