By the end of this tutorial you’ll have your Monday-style workflow running in Maxxwell: same columns, same tags, but now tied directly to real coding agent.
By the end of this tutorial you’ll have your Monday-style workflow running in Maxxwell: same columns, same tags, but now tied directly to real coding agent sessions instead of a status board plus a dozen terminals.
You’ll:
working / idle / blocked / waiting on you labelsBefore step 1, you need:
Backlog, In Progress, Stuck, Waiting for Review, Donebackend, frontend, infra, priority:highCommon failure at this stage: trying to design a new workflow from scratch.
You’re not doing that. You’re mechanically mapping what you already use into Maxxwell’s herd view.
You need a concrete snapshot of how your board works today. This is the baseline you’ll mirror in Maxxwell.
Do this:
Backlog, In Progress, Stuck, Done)cd your-repo
cat > workflow_snapshot.md << 'EOF'
Statuses: Backlog, In Progress, Stuck, Waiting for Review, Done
Tags: backend, frontend, infra, priority:high
Assignee: single owner per item
Notes: freeform comments in Monday
EOF
# Active items
1. Implement login rate limiting [backend, priority:high] - In Progress
2. Fix cursor-agent workspace leak [infra] - Stuck
3. Refactor profile settings form [frontend] - Waiting for Review
4. Add audit log export CLI [backend] - Backlog
5. Update Claude prompts for test generation [infra] - In Progress
Common failure: being vague about statuses.
If you can’t write down exact values and how you use them, you’ll end up with a fuzzy herd view that doesn’t match the way you actually work.
Maxxwell’s herd view shows each agent session with a concrete state:
workingidlewaiting on youblockednot startedneeds sign-indonedeadnot heard fromYou’ll create a simple mapping from your board’s statuses into these labels.
workflow_snapshot.md:echo '
Status → Herd label
-------------------
Backlog → not started
In Progress → working
Stuck → blocked
Waiting for Review → waiting on you
Done → done
EOF' >> workflow_snapshot.md
Backlog → Start a worker session but keep it not started until you explicitly brief itIn Progress → Worker is working; you expect live code changes or analysisStuck → Mark the worker blocked and attach a note explaining the blockerWaiting for Review → Worker shows waiting on you; you own the next moveDone → Worker marked done; code is merged or ready to mergeCommon failure: overloading blocked for everything.
Keep blocked for genuine external constraints (e.g. missing credentials, failing build). Use waiting on you for decision/clarification needed.
Now you bring Maxxwell into the workflow and get a single window to replace scattered boards and terminals.
Follow the docs for your OS, but the shape is:
macOS (CLI via Homebrew):
brew tap rindler/maxxwell
brew install maxxwell
Linux (CLI):
curl -sSL https://docs.maxxwell.dev/install.sh | bash
# or: download from docs and move maxxwell into your PATH
Desktop app:
https://docs.maxxwell.dev/CLI example:
cd your-repo
maxxwell herd
Desktop example:
You should see an empty orchestrator seat and no workers yet.
Common failure: running Maxxwell in a random directory.
Start it in the repo you actually care about; sessions should attach to the working tree you’re already using.
The orchestrator in Maxxwell is itself a real coding-agent session, started from a written brief. You talk to it instead of to twelve terminals, and it reports what landed, what it decided for you, and what needs your call.
This is the piece that replaces:
Create orchestrator_brief.md next to your repo:
cat > orchestrator_brief.md << 'EOF'
Goal: replace the current Monday-style board with a Maxxwell herd view.
You are the orchestrator. Your job:
- Track 5 active tasks from workflow_snapshot.md
- Keep each task mapped to one worker session
- Report which sessions are working, idle, blocked, waiting on me, or done
- Summarize what landed (merged, ready to merge) vs. what needs my decision
Use the following status mapping:
Backlog → not started
In Progress → working
Stuck → blocked
Waiting for Review → waiting on me
Done → done
EOF
Common failure: giving the orchestrator a fuzzy “help me manage agents” prompt.
Be explicit. This is your board logic encoded as text.
From the CLI:
maxxwell orchestrator --brief orchestrator_brief.md
Or in the desktop app:
orchestrator_brief.mdYou now have:
Common failure: treating the orchestrator as another worker.
The orchestrator doesn’t write code for a single task. It coordinates workers and tells you where attention is needed.
Now you map concrete items from your old board to Maxxwell worker sessions.
Each item gets:
Take your earlier list:
1. Implement login rate limiting [backend, priority:high] - In Progress
2. Fix cursor-agent workspace leak [infra] - Stuck
3. Refactor profile settings form [frontend] - Waiting for Review
4. Add audit log export CLI [backend] - Backlog
5. Update Claude prompts for test generation [infra] - In Progress
For each item, start a worker via the CLI or UI.
CLI example for item 1:
maxxwell worker \
--name "login rate limiting" \
--tags "backend,priority:high" \
--brief "Implement rate limiting on login endpoint; add tests; keep existing auth flow intact."
Repeat for items 2-5, adjusting --name, --tags, and --brief.
In the desktop app:
For each worker, set the initial state according to your mapping:
In Progress → mark as workingStuck → mark as blocked and add a noteWaiting for Review → mark as waiting on youBacklog → mark as not startedMaxxwell tracks these per session and shows them in the herd view:
Common failure: starting workers without briefs or tags.
If you don’t encode the item title and tags into the session, you’ll end up with anonymous panes that are harder to reconcile with your old board.
One distinctive property of Maxxwell: fleet controls draft rather than act.
This is where you replace board edits and comment threads with concrete orchestration moves, while keeping control.
In Monday, you’d change a status cell.
In Maxxwell, from the orchestrator seat:
Add audit log export CLIPlease start implementing the audit log export CLI:
- Read events from the existing audit_log table
- Provide a command-line interface to export to JSON
- Add tests for large export batches
Mark this session as working.
Result:
not started to workingCommon failure: assuming fleet controls auto-execute.
They don’t. If you don’t press Enter, nothing happens. That’s deliberate.
If a worker hits a build failure or missing secret, you mark it blocked.
From the orchestrator:
STRIPE_API_KEYYou are blocked because STRIPE_API_KEY is missing in the environment.
Stop attempting further changes until I confirm credentials are available.
Mark this session as blocked.
Herd view now shows the item as blocked, aligned with your old Stuck status.
On Monday-style boards, most of the coordination lives in:
Maxxwell’s orchestrator takes that role and returns a report.
From the orchestrator seat, you can send something like:
Summarize the herd:
- Which sessions are working, idle, blocked, waiting on me, or done?
- For each working session, list the last concrete change (commit, diff, test).
- Separate what has landed from what is waiting on my call.
You get back something in this shape:
Working:
- login rate limiting [backend,priority:high]: added rate limit middleware, tests passing locally.
- Claude prompt updates [infra]: refactored test generation prompt, no code changes yet.
Blocked:
- cursor-agent workspace leak [infra]: blocked on reproducing leak; logs inconclusive.
Waiting on you:
- profile settings refactor [frontend]: tests green; waiting for your review and merge decision.
Not started:
- audit log export CLI [backend]: no work yet.
Done:
- none.
This report replaces your Monday “board view + comments + Slack” combo.
Common failure: still updating the Monday board manually.
Pick one coordination surface. If Maxxwell is the source of truth, stop doubly maintaining Monday statuses.
One quiet but important part of this migration: sessions should outlive the app.
Maxxwell is local-first and respects that:
# In the desktop app, Cmd+Q / Alt+F4
# In CLI, Ctrl+C out of the UI
maxxwell herd
You should see:
working, blocked, etc.) intactCommon failure: assuming Maxxwell owns your runtime lifecycle.
Your workers are your own unmodified tools - Claude, Codex, Cursor-agent - running as real terminal sessions you can attach to and take over at any moment. Maxxwell sits above them; it doesn’t replace them.
You don’t import Monday’s schema directly.
You:
workflow_snapshot.md fileIn Progress, Stuck) to herd labels (working, blocked, waiting on you)The data lives in Maxxwell as text and labels, attached to real agent sessions instead of board rows.
No.
Maxxwell surfaces:
It does not automatically correct drift or re-aim a session. You, via the orchestrator, stay the one who decides whether a worker is on track.
No.
What it does give you:
Maxxwell won’t silently rewrite or trim transcripts on its own schedule.
With a Monday board + tmux:
With Maxxwell’s herd view:
If you only ever run one agent at a time, this is overkill. Once you’re at 4-12 sessions, it removes a lot of manual tracking.
For ordinary local use: no.
You bring your own model access (API key or existing Claude/Codex subscription). Teams can pay for additional features, but the local orchestration behavior described in this tutorial is the same.