v0.9.0 · Apache-2.0
linux · macOS · a personal tool

pastor

An agent orchestrator for a flock of machines.

Queue tasks, schedule jobs, and let pastor spread coding agents (Claude Code, Codex, opencode) across your flock over ssh.

  • queue tasks wait their turn, by priority
  • jobs cron or a board turns into tasks
  • flocks any box you can ssh to runs agents

Every agent is a real terminal you can attach to. You check back later: done, stuck, or waiting on you.

install

$ curl -fsSL https://cacari.co/pastor/install.sh | sh

One binary in ~/.local/bin. Each machine needs herdr 0.9+, and the head needs ssh to the others. more

live · a scripted session

# by hand
$ pastor flock list
NAME     DEFAULT  MACHINES                AGENTS  QUEUED
default  yes      desk 1/2, server-1 2/3  3       0
sandbox  no       sandbox-1 0/1           0       0
$ pastor task run "Fix the flaky login test" --repo '~/src/app' --worktree --profile develop
ID    STATE   PRIORITY  MACHINE  FLOCK    AGENT   MODEL   JOB  AGE  NOTE
t-12  queued  normal    -        default  claude  sonnet  run  0s   Fix the flaky login test
$ pastor task run "Triage the new issues" --repo '~/src/tracker' --flock sandbox --priority high
ID    STATE   PRIORITY  MACHINE  FLOCK    AGENT           MODEL  JOB  AGE  NOTE
t-13  queued  high      -        sandbox  claude-sandbox  -      run  0s   Triage the new issues
$ pastor job run morning
started job morning
$ pastor queue
POS  TASK  LEVEL   WHERE          FROM         WAITED  WHY NOT YET
1    t-15  normal  flock default  job morning  6s      flock default is full
2    t-16  normal  flock default  job morning  6s      flock default is full
$ pastor task list
ID    STATE    PRIORITY  MACHINE    FLOCK    AGENT           MODEL   JOB      AGE  NOTE
t-12  running  normal    server-1   default  claude          sonnet  run      1m   Fix the flaky login test
t-13  blocked  high      sandbox-1  sandbox  claude-sandbox  -       run      1m   agent asked: 2 issues look like spam, skip them?
t-14  running  normal    desk       default  claude          -       morning  40s  Update the dependencies
t-15  queued   normal    -          default  claude          -       morning  40s  Run the test suite
t-16  queued   normal    -          default  claude          -       morning  40s  Sort the inbox notes

# Running commands by hand is cool, but pastor is even more powerful in the hands of agents.
> keep the PRs on app moving, and tell me if anything is stuck

● I'll start with anything that is waiting on an answer.

● Bash(pastor task list --blocked --json | jq -c '.[] | {id, state, error}')
  ⎿  {"id":13,"state":"blocked","error":"agent asked: 2 issues look like spam, skip them?"}

● Bash(pastor task read t-13 --lines 3)
  ⎿  Read 6 new issues: 4 bugs with steps to reproduce, summarised above.
     2 look like spam (a link and no details). Skip them?

● t-13 is triaging issues in the sandbox. Skipping spam is safe, so I'll answer it.

● Bash(pastor task send t-13 "yes, skip them")
  ⎿  sent text and 1 key to t-13

● Next, the open review on #42, in a worktree of its own.

● Bash(pastor task run "Address the review on #42" --repo '~/src/app' --worktree)
  ⎿  ID    STATE   PRIORITY  MACHINE  FLOCK    AGENT   MODEL   JOB  AGE  NOTE
     t-17  queued  normal    -        default  claude  sonnet  run  0s   Address the review on #42

● CI is red on main. That should not wait behind the rest.

● Bash(pastor task run "CI is red on main: find out why" --repo '~/src/app' --priority critical --preempt)
  ⎿  ID    STATE   PRIORITY  MACHINE  FLOCK    AGENT   MODEL  JOB  AGE  NOTE
     t-18  queued  critical  -        default  claude  -      run  0s   CI is red on main: find out why

● Where things stand:
  - t-13 asked about two spam issues; I told it to skip them.
  - The review on #42 is being addressed in t-17.
  - t-18 is looking at the red CI; it jumped the queue and paused a low task.
  Nothing needs you yet.

the first run, step by step →

what you can do

the examples, with the config to copy

why it exists

I built pastor to learn how AI agents, their harnesses and AI governance work in practice, and to hand my own daily tasks and processes to agents.

It is shaped by that use first. why I built it

what it is not

  • a platform. Built for my own workflow first. Ideas are welcome when they fit.
  • a cloud service. Everything runs on your machines, over ssh.
  • a chat app. Every agent is a real terminal you can attach to.
  • stable. It is young. Compatibility is best effort.

leave pastor?

Open in a new tab?

h/l choose · enter confirm · esc stay