kunchenguid/firstmatePublic

Talk to one agent. Ship with a crew.

AI summary: Multi-agent coordination framework that allows you to direct a crew of specialized AI assistants.

Stars
8.3K
+94 today
Forks
2.6K
Watchers
27
Open issues
712
Open PRs
1.8K
Contributors
~146
Commits
1K
Branches
55

ShellMITCreated Jun 12, 2026Last push today+281 stars this week+1.2K this month

Quick answers

What is firstmate?
Multi-agent coordination framework that allows you to direct a crew of specialized AI assistants.
What does firstmate do?
Firstmate is a multi-agent framework designed to transition users from interacting with single AI models to coordinating entire teams. It provides an architecture where a lead agent can distribute tasks among specialized subordinates, maintaining shared context and unified goals. The tool runs efficiently on macOS and Linux, allowing developers to define complex workflows that require diverse skill sets. By managing the inter-agent communication and state, it enables building sophisticated applications that single models struggle to complete.
Who is firstmate for?
Developers and system architects aiming to build complex, multi-step AI applications using a team of agents. It is ideal for teams that require specialized models working in tandem rather than relying on a single generalist.
How popular is firstmate on GitHub?
kunchenguid/firstmate has 8,305 stars and 2,643 forks on GitHub, and gained 281 stars in the last 7 days.
What license does firstmate use?
kunchenguid/firstmate is released under the MIT license.

Star history

since Aug 12, 2026
02.5K5K7.5KAug 2026Sep 2026Sep 2026Oct 2026
8.3K stars as of Oct 25, 2026. Measured daily since Aug 12, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
NovDecJanFebMarAprMayJunJulAugSepOctMonWedFri2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 6 commits2026-06-12: 5 commits2026-06-13: 5 commits2026-06-14: 5 commits2026-06-15: 1 commit2026-06-16: 0 commits2026-06-17: 3 commits2026-06-18: 3 commits2026-06-19: 0 commits2026-06-20: 2 commits2026-06-21: 3 commits2026-06-22: 5 commits2026-06-23: 7 commits2026-06-24: 4 commits2026-06-25: 6 commits2026-06-26: 7 commits2026-06-27: 6 commits2026-06-28: 1 commit2026-06-29: 6 commits2026-06-30: 4 commits2026-07-01: 4 commits2026-07-02: 8 commits2026-07-03: 17 commits2026-07-04: 13 commits2026-07-05: 0 commits2026-07-06: 7 commits2026-07-07: 11 commits2026-07-08: 9 commits2026-07-09: 8 commits2026-07-10: 15 commits2026-07-11: 8 commits2026-07-12: 1 commit2026-07-13: 5 commits2026-07-14: 4 commits2026-07-15: 5 commits2026-07-16: 11 commits2026-07-17: 8 commits2026-07-18: 2 commits2026-07-19: 6 commits2026-07-20: 4 commits2026-07-21: 12 commits2026-07-22: 9 commits2026-07-23: 14 commits2026-07-24: 7 commits2026-07-25: 7 commits2026-07-26: 1 commit2026-07-27: 2 commits2026-07-28: 11 commits2026-07-29: 9 commits2026-07-30: 10 commits2026-07-31: 6 commits2026-08-01: 2 commits2026-08-02: 5 commits2026-08-03: 6 commits2026-08-04: 13 commits2026-08-05: 4 commits2026-08-06: 18 commits2026-08-07: 5 commits2026-08-08: 2 commits2026-08-09: 3 commits2026-08-10: 9 commits2026-08-11: 7 commits2026-08-12: 3 commits2026-08-13: 9 commits2026-08-14: 1 commit2026-08-15: 3 commits2026-08-16: 3 commits2026-08-17: 6 commits2026-08-18: 8 commits2026-08-19: 7 commits2026-08-20: 2 commits2026-08-21: 9 commits2026-08-22: 4 commits2026-08-23: 14 commits2026-08-24: 6 commits2026-08-25: 4 commits2026-08-26: 11 commits2026-08-27: 6 commits2026-08-28: 4 commits2026-08-29: 7 commits2026-08-30: 5 commits2026-08-31: 3 commits2026-09-01: 12 commits2026-09-02: 13 commits2026-09-03: 18 commits2026-09-04: 4 commits2026-09-05: 11 commits2026-09-06: 13 commits2026-09-07: 11 commits2026-09-08: 4 commits2026-09-09: 11 commits2026-09-10: 5 commits2026-09-11: 14 commits2026-09-12: 9 commits2026-09-13: 5 commits2026-09-14: 11 commits2026-09-15: 14 commits2026-09-16: 8 commits2026-09-17: 13 commits2026-09-18: 5 commits2026-09-19: 8 commits2026-09-20: 6 commits2026-09-21: 10 commits2026-09-22: 19 commits2026-09-23: 19 commits2026-09-24: 16 commits2026-09-25: 36 commits2026-09-26: 17 commits2026-09-27: 20 commits2026-09-28: 13 commits2026-09-29: 11 commits2026-09-30: 7 commits2026-10-01: 6 commits2026-10-02: 6 commits2026-10-03: 3 commits2026-10-04: 5 commits2026-10-05: 7 commits2026-10-06: 4 commits2026-10-07: 10 commits2026-10-08: 6 commits2026-10-09: 3 commits2026-10-10: 2 commits2026-10-11: 5 commits2026-10-12: 2 commits2026-10-13: 2 commits2026-10-14: 9 commits2026-10-15: 9 commits2026-10-16: 6 commits2026-10-17: 17 commits2026-10-18: 4 commits2026-10-19: 0 commits2026-10-20: 8 commits2026-10-21: 7 commits2026-10-22: 18 commits2026-10-23: 20 commits2026-10-24: 11 commits2026-10-25: 6 commits2026-10-26: 1 commit2026-10-27: 0 commits2026-10-28: 0 commits2026-10-29: 0 commits2026-10-30: 0 commits2026-10-31: 0 commits
1,042 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    1,042 commits in 52 weeks

  • Community-driven

    ~146 contributors

  • Permissive license

    MIT

  • Repeat trending

    11 trending appearances

What firstmate does

Firstmate is a multi-agent framework designed to transition users from interacting with single AI models to coordinating entire teams. It provides an architecture where a lead agent can distribute tasks among specialized subordinates, maintaining shared context and unified goals. The tool runs efficiently on macOS and Linux, allowing developers to define complex workflows that require diverse skill sets. By managing the inter-agent communication and state, it enables building sophisticated applications that single models struggle to complete.

Developers and system architects aiming to build complex, multi-step AI applications using a team of agents. It is ideal for teams that require specialized models working in tandem rather than relying on a single generalist.

  • Multi-agent coordination: Distributes complex objectives across a team of specialized AI assistants.
  • Shared context management: Maintains a unified state and memory pool for all participating agents.
  • Role definition: Allows developers to assign specific tasks and capabilities to individual crew members.
  • Cross-platform support: Operates natively on macOS and Linux operating systems.
  • Workflow orchestration: Manages the execution pipeline and dependencies between different agent actions.

Where teams use it

Complex software development

Coordinate a coding agent, a testing agent, and a documentation agent to ship complete features.

Research and synthesis

Deploy agents to gather data while others analyze and summarize the findings.

Multi-step workflow automation

Break down intricate business processes into manageable tasks assigned to specialized models.

Context-heavy operations

Maintain long-running projects where multiple agents need to access a shared knowledge base.

README

main branch

firstmate

Platform X Discord

Talk to one agent. Ship with a crew.

firstmate - talk to one agent, ship with a crew

What it is

You can run one coding agent easily. But the moment you want three project tasks done in parallel - fixes, investigations, plans, audits - you become a tab-juggler: babysitting sessions, copy-pasting context between repos, forgetting which terminal had the failing test.

firstmate flips the model. You talk to a single agent - the first mate - and it runs the crew for you: spawning autonomous agents in a visible session backend, giving each a clean git worktree, supervising them to completion, and handing you finished PRs, approved local merges, or standalone investigation reports. For larger fleets, you can opt in to persistent secondmates: second mates that are still ordinary direct reports, but run from their own isolated firstmate homes on this machine or another SSH-reachable host.

firstmate is not a model, not a harness, not a skill, not an MCP server, and not a CLI. firstmate is an agent distro for running a crew of agents. An agent distro is a portable directory of instructions, skills, tooling, policies, and state conventions that turns a general-purpose agent into a specialized one. There is no app to install: the cloned repo is the distro - AGENTS.md, bundled firstmate skills, and helper scripts that any terminal coding agent can follow. Launching a supported harness inside it for your primary session instantiates your first mate - and makes you the captain.

Features

  • One liaison - you talk only to the first mate; it dispatches, supervises, escalates only real decisions, and reports plain outcomes.
  • A visible crew - every crewmate works in its own tmux window or Herdr tab, or in an experimental Zellij tab, experimental cmux workspace, experimental Tern block, experimental Orca terminal, or experimental T3 Code thread you can watch or interact with; the first mate reconciles.
  • Disposable worktrees - each task runs in a clean treehouse git worktree, or an Orca-managed worktree when backend=orca, so parallel work on one repo never collides.
  • Two task shapes - ship tasks deliver authorized changes; scout tasks leave standalone investigation reports when the intake contract warrants separate research.
  • Explicit project modes - each project ships via no-mistakes, direct-PR, or local-only, with an optional +yolo merge-autonomy flag, an optional branch=<prefix> override for the default fm/ ship-branch prefix, and an optional forge=gerrit binding under which the worker publishes a Gerrit change instead of opening a pull request.
  • Self-repo boundary - a home runs as firstmate user/operator by default, so a firstmate bug is diagnosed and patched locally but never pushed, PRed, issued, commented, or forked upstream on its own; publishing to firstmate's own repository needs the config/firstmate-role maintainer opt-in or a per-task captain consent (schema).
  • Optional secondmates - opt in to persistent second mates that run from isolated firstmate homes with their own FM_HOME, state, projects, and session lock, either locally or as a whole home on an SSH-reachable host, with guarded updates and recovery that never turns an unavailable remote route into a local replacement.
  • Event-driven, zero-token supervision - a bash watcher sleeps on the fleet and wakes the first mate only when something needs you; verified primary harnesses also get a turn-end backstop that blocks or follows up on a blind stop when work is under way and supervision is not live.
  • Optional Relay - opt in with one local .env pairing token so firstmate can answer your public mentions on X and Discord alike, act on normal reversible mention requests through the same lifecycle as chat requests, acknowledge spawned work, and post up to three public-safe completion follow-ups within seven days for genuine milestones and the final outcome without changing non-Relay behavior; a final reply promised in a thread becomes durable state that is reconciled from disk, so a restart or a compacted conversation cannot lose it; dry-run preview records would-be replies and dismissals locally before go-live.
  • Strict project boundary - the first mate is read-only over your projects except for the narrow guarded and captain-approved operations authorized by hard rule 1, including fleet sync's guarded safe branch pruning; crewmates make every other project change behind the configured merge authority.
  • Restart-proof - all state lives on disk and in the active session backend (tmux by hard default, herdr, rex, or cmux when selected or auto-detected, zellij/orca/paseo/t3code/tern when explicitly selected); the next session reconciles after a restart, while ordinary supervision recovers confirmed-dead secondmate agents without waiting for one.

Full detail on every feature lives in docs/architecture.md.

Quick Start

Requirements

  • A verified primary agent harness: Claude Code, Grok, Pi, pi-signed, Oh My Pi (omp), Codex, OpenCode, or Cursor Agent CLI.
  • Git and the GitHub CLI, authenticated through gh auth login.
  • The CLI and dependencies for your selected runtime backend; tmux is the reference default.

The first mate detects supported missing or outdated tools and offers their install or upgrade after you approve. Backend-specific setup is linked in Documentation.

Recommended harnesses

Claude Code, Grok, and Pi are equal co-primary recommendations for running the primary firstmate session, with pi-signed supported as Pi's distinct signed-wrapper identity. Claude Code uses a tracked Stop hook for tokenless watcher re-arm and rewake, Grok uses background-notify wake cycles, and Pi uses its tracked primary watcher extension. All three have verified turn-end guard paths when launched with their documented setup. Pick whichever one matches your subscription and workflow.

Oh My Pi (omp), a Pi fork, is verified as a primary with the same extension-owned watcher model as Pi and a stronger turn-end guard: its blocking session_stop hook compels a continuation instead of requesting one. Codex and OpenCode are also verified and supported as primary harnesses; Codex uses bounded foreground checkpoints, and OpenCode uses a TUI plugin, so both carry more harness-specific supervision tradeoffs than the three co-primaries. Cursor Agent CLI is verified as a primary too, using a tracked project-scope .cursor/hooks.json whose stop hook parks on the watcher between turns, closest in shape to Claude Code's. Launch it with --trust, or none of its project hooks load; it also has no turn-end hook in headless cursor-agent -p, so run the primary session interactively.

Install and launch

gh auth login
git clone https://github.com/kunchenguid/firstmate
cd firstmate

Then launch one of the co-primary harnesses; AGENTS.md takes over from there:

Claude Code

claude

Grok

grok --trust

Pi

pi
# or, when the signed wrapper is installed
FM_PI_HARNESS=pi-signed pi-signed

Oh My Pi

omp
# or, when starting from inside a Claude Code pane
FM_OMP_HARNESS=omp omp

Start omp with this checkout as its working directory: it auto-discovers the tracked .omp/extensions/*.ts files with no trust dialog, and naming them with -e as well would load each twice.

For Grok, --trust is needed once per clone so project hooks and the turn-end guard load; /hooks-trust inside Grok works too. For Pi, approve the project trust prompt once per clone on first launch so the tracked .pi/extensions/*.ts files auto-load. The /calm toggle on Pi, and on Claude Code behind its default-off early-access function-hooks flag, hides supported transcript chrome, including canonically classified Firstmate operational user rows, and uses a Calm-only animated working boat during active runs while preserving all model context and session data. Calm changes only presentation, not the user-role delivery, ordering, authority, persistence, or exports of the operational inputs it hides. The preference persists for the effective Firstmate home, and toggling it off restores ordinary rendering. Calm's current behavior and supported limits are separate from its version-scoped maintainer evidence. Pi's /supervision-model command pins a cheaper model and a shallower reasoning effort for the supervision branch alone, from the eligible models and thinking levels Pi itself reports, and with no pin the branch normally follows your own conversation's model and effort; see the configuration schema.

Talk to it

> ahoy! look at my github project xyz, then fix the flaky login test and add dark mode

# firstmate checks its toolchain (asking your consent before installing or upgrading anything),
# clones the project under projects/ and spawns two isolated workers in the active backend.
# Minutes later:

  PR ready for review, captain: https://github.com/you/xyz/pull/42
  (fix flaky login test - risk: low - CI green)

> alright merge it

More backends

Setup guides for tmux (the default) and every other supported backend (herdr, zellij, Orca, cmux, Paseo, Rex, T3 Code, tern) are linked in Documentation below.

How It Works

            you (the captain)
                  │  chat: requests, decisions, "merge it"
                  ▼
 ┌─────────────────────────────────────┐
 │ firstmate            (this repo)    │
 │ reads projects/ + firstmate routes  │
 │ writes guarded backlog/briefs/state │
 └──┬──────────────┬───────────────┬───┘
    │ backend sends / status files │
    ▼              ▼               ▼
 ┌────────┐   ┌────────┐      ┌────────┐
 │fm-task1│   │fm-task2│  ... │fm-taskN│   one visible task endpoint each
 │crewmate│   │crewmate│      │crewmate│   one autonomous agent each
 └───┬────┘   └───┬────┘      └───┬────┘
     ▼            ▼               ▼
  treehouse worktree, Orca worktree, or isolated secondmate home
     │
     ├─ ship: project mode ► PR/local merge ► teardown
     │
     └─ scout: report at data/<id>/report.md ► decision inventory ► relay findings ► teardown

You chat with the first mate. It routes each request to a crewmate in its own session endpoint and git worktree, supervises the fleet with a zero-token event-driven watcher, and brings you finished PRs, approved local merges, or investigation reports. Optional secondmates extend this to persistent local or whole-home remote second mates, dispatch profiles let you steer which harness handles which task, and opt-in Relay lets the same fleet answer public mentions. codex-app is not a runtime backend yet; docs/codex-app-backend.md owns the Codex App boundary.

Full architecture - the supervision engine, worktree isolation, secondmates, dispatch profiles, project modes, optional Relay, fleet sync, and self-update - is in docs/architecture.md.

Built-in skills

Firstmate ships these user-invocable built-in skills. Claude and grok use the slash form shown here; codex uses the same names with $, such as $afk.

Skill What it does
/afk Enter away-mode supervision: Pi's in-process branch, a supervision host beside the other primaries (on by default for Claude), or the daemon handles wakes while you step away; see the away procedure for the posture and return contract
/quiet Keep routine wakes off main while staying and chatting; requested actions proceed now rather than waiting for your return. Where Pi's branch or an attended supervision host already does this, it only says so; otherwise it starts the quiet daemon, which stays active through ordinary chat until /quiet off
/ahoy Recap visible session events since the prior real captain message plus visibly unanswered captain decisions, then guide the captain through any open decisions one at a time in agent-judged impact order; fall back to Bearings when invoked as the session's first real captain message
/bearings Generate a concise four-section chat digest from bounded fleet state, including registered remote-home ledgers and measured follow-up for owned contributions; use /bearings file to also replace today's dated report in data/, and add include PRs for live GitHub enrichment
/updatefirstmate Guardedly update the running firstmate and its secondmates - fast-forward, or reconcile a redundant post-squash-merge divergence - then persist and restart every live mate successfully left on the target commit - including already-current homes - with an honest re-read nudge only when restart cannot be proven
/stow Sweep the session for uncaptured durable knowledge, persist the open work records this session knows are unfiled or now wrong, curate tiered startup memory with decay and cold archival, enforce each home's budget or surface the required decision, cascade to registered second mates, and report what is safe to reset

Bearings invocation examples:

  • /bearings returns the fresh four-section digest in chat only.
  • Owned-contribution follow-up comes from the cached coverage projection; include PRs remains the opt-in for repository-wide live PR enrichment.
  • /bearings include PRs keeps chat-only mode and opts into live PR enrichment.
  • /bearings file replaces today's data/status-report-<YYYY-MM-DD>.md from scratch and links it from the four-section chat digest.
  • /bearings file include PRs combines the dated report with live PR enrichment.

Agent-only reference skills live under .agents/skills/ and are loaded by firstmate at the trigger points named in AGENTS.md.

Two-tier skill layout

Firstmate's skills live in two separate places with different audiences:

  • .agents/skills/ - agent-loaded skills (this section's table, plus firstmate's agent-only reference skills). Every one of these assumes a live firstmate home and is meaningless, or actively misleading, installed anywhere else, so each carries metadata.internal: true in its frontmatter. That flag hides them from installer discovery (tools like the skills.sh npx skills add installer) without affecting how firstmate itself loads them - frontmatter metadata is inert to the agent's own skill loader.
  • skills/ - public, installer-facing skills meant to be installed standalone into any project, independent of firstmate. Each one is a self-contained skill with no dependency on firstmate's paths, tools, or vocabulary. Today that is skills/stow, a generic session-knowledge-sweep skill that routes findings by explicit instruction first, then existing local conventions, then a private .stow-notes.md fallback, and curates tiered entries through decay, local archival, and user-approved on-demand offload proposals. It intentionally shares no code with the firstmate-internal .agents/skills/stow it is named after, so the two can evolve independently.

Documentation

  • docs/architecture.md - maintainer architecture for the crew, supervision, worktrees, secondmates, and project modes.
  • docs/configuration.md - environment variables, FM_HOME, runtime backend selection, optional Relay and its X and Discord setup steps, trusted external process-event adapter setup, the files you set, and harness support.
  • docs/extension-bindings.md - maintainer architecture for the narrow trusted external process-event-adapter/1 package, binding, handshake, and evidence boundary.
  • docs/remote-secondmates.md - current setup, routing, transfer, recovery, and safety behavior for whole-home remote second mates.
  • docs/calm.md - current /calm behavior on Pi and Claude Code and its supported presentation limits.
  • docs/voice-relay.md - the optional spoken interface: setup on both machines, measured round-trip cost, what a spoken answer may read, and what this build does not do yet.
  • docs/fleet-ledger.md - the opt-in activity ledger outside tools can read to follow a home's tasks, and its record contract.
  • docs/wedge-alarm.md - configure the active alert for an away-mode escalation delivery that gets stuck.
  • docs/usage-warner.md - configure the opt-in local threshold warner for Claude usage windows.
  • docs/tmux-backend.md - current setup and limits for the tmux reference backend.
  • docs/herdr-backend.md - current setup, CI coverage, safety boundaries, and limits for the Herdr backend.
  • docs/zellij-backend.md - current setup and limits for the experimental Zellij backend.
  • docs/orca-backend.md - current setup and limits for the experimental Orca backend.
  • docs/cmux-backend.md - current setup, socket security, and limits for the experimental cmux backend.
  • docs/paseo-backend.md - current setup, terminal-name routing, and limits for the experimental Paseo backend.
  • docs/rex-backend.md - current setup, auto-detection, block-id routing, the absence proof, and limits for the experimental Rex backend.
  • docs/t3code-backend.md - current setup, sign-in, and limits for the experimental T3 Code backend.
  • docs/tern-backend.md - current setup, surfaces capture, native-state degradation, and limits for the experimental tern backend.
  • docs/codex-app-backend.md - the current blocked Codex App backend boundary and rollout contract.
  • docs/verification/runtime-backends.md - active maintainer verification for runtime backend guarantees.
  • docs/gerrit-forge-integration.md - maintainer architecture for the forge axis: why change-shaped review is not a forge variant, the mode/forge/shape composition test, and where responsibility for forge mechanics sits.
  • docs/external-review-forge.md - maintainer architecture for forge=external, where a review tool uploads its own snapshot: the no-push invariant and its three layers, the personal backup remote, and the accepted residual.
  • docs/gitlab-merge-watch.md - maintainer verification for watching and merging GitLab merge requests on arbitrary instances.
  • docs/gerrit-change-watch.md - maintainer verification for watching Gerrit changes read-only, and why the merge path refuses one.
  • docs/forgejo-tea-integration.md - maintainer verification for watching and merging Forgejo/Gitea pull requests via tea.
  • docs/turnend-guard.md - the primary session's current "no turn ends blind" backstop, scope, loop safety, and compatibility limits.
  • docs/verification/supervision.md - active maintainer verification for session-start, guard, continuity, and wedge integrations.
  • docs/supervision-protocols/ - rendered primary-harness watcher protocols for Claude, Codex, OpenCode, Pi and pi-signed, omp, Grok, Cursor, and unknown harness fallback.
  • docs/scripts.md - the bin/ toolbelt reference.
  • docs/documentation-audiences.md - documentation audiences and the machine-checked placement boundary.
  • AGENTS.md - the supervisor contract, role boundary, and routing index for conditional procedures.
  • CONTRIBUTING.md - how to contribute, including the dev/test commands.

Contributing

Contributions are welcome - see CONTRIBUTING.md for the workflow, repo conventions, and how to run the tests.

License

MIT - see LICENSE.

Star History

Star History Chart
View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Code frequency

additions and deletions
+48.1K-48.1KWeek of 2026-06-07: +2,420 linesWeek of 2026-06-07: -424 linesWeek of 2026-06-14: +9,572 linesWeek of 2026-06-14: -8,379 linesWeek of 2026-06-21: +22,847 linesWeek of 2026-06-21: -6,149 linesWeek of 2026-06-28: +23,232 linesWeek of 2026-06-28: -2,561 linesWeek of 2026-07-05: +25,321 linesWeek of 2026-07-05: -3,817 linesWeek of 2026-07-12: +21,600 linesWeek of 2026-07-12: -2,704 linesWeek of 2026-07-19: +32,457 linesWeek of 2026-07-19: -7,074 linesWeek of 2026-07-26: +23,601 linesWeek of 2026-07-26: -7,473 linesWeek of 2026-08-02: +38,926 linesWeek of 2026-08-02: -3,312 linesWeek of 2026-08-09: +16,929 linesWeek of 2026-08-09: -2,342 linesWeek of 2026-08-16: +26,026 linesWeek of 2026-08-16: -4,259 linesWeek of 2026-08-23: +38,680 linesWeek of 2026-08-23: -6,770 linesWeek of 2026-08-30: +36,166 linesWeek of 2026-08-30: -3,990 linesWeek of 2026-09-06: +40,691 linesWeek of 2026-09-06: -3,454 linesWeek of 2026-09-13: +28,466 linesWeek of 2026-09-13: -3,808 linesWeek of 2026-09-20: +48,083 linesWeek of 2026-09-20: -6,635 linesWeek of 2026-09-27: +20,429 linesWeek of 2026-09-27: -2,661 linesWeek of 2026-10-04: +1,956 linesWeek of 2026-10-04: -194 linesJun 7, 2026Oct 4, 2026
+457.4K lines added, -76K removed over the last year.

Commits per week

last 52 weeks
1230Week of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 16 commitsWeek of 2026-06-14: 14 commitsWeek of 2026-06-21: 38 commitsWeek of 2026-06-28: 53 commitsWeek of 2026-07-05: 58 commitsWeek of 2026-07-12: 36 commitsWeek of 2026-07-19: 59 commitsWeek of 2026-07-26: 41 commitsWeek of 2026-08-02: 53 commitsWeek of 2026-08-09: 35 commitsWeek of 2026-08-16: 39 commitsWeek of 2026-08-23: 52 commitsWeek of 2026-08-30: 66 commitsWeek of 2026-09-06: 67 commitsWeek of 2026-09-13: 64 commitsWeek of 2026-09-20: 123 commitsWeek of 2026-09-27: 66 commitsWeek of 2026-10-04: 37 commitsWeek of 2026-10-11: 50 commitsWeek of 2026-10-18: 68 commitsWeek of 2026-10-25: 7 commitsNov 2, 2025Oct 25, 2026
1K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 6 commitsSun 1:00 — 3 commitsSun 2:00 — 3 commitsSun 3:00 — 5 commitsSun 4:00 — 2 commitsSun 5:00 — 0 commitsSun 6:00 — 6 commitsSun 7:00 — 1 commitsSun 8:00 — 1 commitsSun 9:00 — 0 commitsSun 10:00 — 9 commitsSun 11:00 — 8 commitsSun 12:00 — 4 commitsSun 13:00 — 7 commitsSun 14:00 — 11 commitsSun 15:00 — 10 commitsSun 16:00 — 5 commitsSun 17:00 — 3 commitsSun 18:00 — 7 commitsSun 19:00 — 4 commitsSun 20:00 — 3 commitsSun 21:00 — 4 commitsSun 22:00 — 7 commitsSun 23:00 — 2 commitsMon 0:00 — 2 commitsMon 1:00 — 1 commitsMon 2:00 — 5 commitsMon 3:00 — 4 commitsMon 4:00 — 2 commitsMon 5:00 — 1 commitsMon 6:00 — 2 commitsMon 7:00 — 1 commitsMon 8:00 — 1 commitsMon 9:00 — 1 commitsMon 10:00 — 4 commitsMon 11:00 — 6 commitsMon 12:00 — 10 commitsMon 13:00 — 5 commitsMon 14:00 — 10 commitsMon 15:00 — 7 commitsMon 16:00 — 8 commitsMon 17:00 — 8 commitsMon 18:00 — 7 commitsMon 19:00 — 5 commitsMon 20:00 — 8 commitsMon 21:00 — 5 commitsMon 22:00 — 9 commitsMon 23:00 — 3 commitsTue 0:00 — 12 commitsTue 1:00 — 2 commitsTue 2:00 — 1 commitsTue 3:00 — 1 commitsTue 4:00 — 4 commitsTue 5:00 — 0 commitsTue 6:00 — 2 commitsTue 7:00 — 1 commitsTue 8:00 — 1 commitsTue 9:00 — 5 commitsTue 10:00 — 6 commitsTue 11:00 — 10 commitsTue 12:00 — 12 commitsTue 13:00 — 6 commitsTue 14:00 — 5 commitsTue 15:00 — 12 commitsTue 16:00 — 8 commitsTue 17:00 — 6 commitsTue 18:00 — 6 commitsTue 19:00 — 14 commitsTue 20:00 — 11 commitsTue 21:00 — 9 commitsTue 22:00 — 9 commitsTue 23:00 — 12 commitsWed 0:00 — 16 commitsWed 1:00 — 5 commitsWed 2:00 — 3 commitsWed 3:00 — 1 commitsWed 4:00 — 2 commitsWed 5:00 — 1 commitsWed 6:00 — 2 commitsWed 7:00 — 3 commitsWed 8:00 — 1 commitsWed 9:00 — 6 commitsWed 10:00 — 4 commitsWed 11:00 — 8 commitsWed 12:00 — 6 commitsWed 13:00 — 6 commitsWed 14:00 — 7 commitsWed 15:00 — 12 commitsWed 16:00 — 7 commitsWed 17:00 — 5 commitsWed 18:00 — 10 commitsWed 19:00 — 6 commitsWed 20:00 — 12 commitsWed 21:00 — 12 commitsWed 22:00 — 7 commitsWed 23:00 — 10 commitsThu 0:00 — 18 commitsThu 1:00 — 6 commitsThu 2:00 — 5 commitsThu 3:00 — 8 commitsThu 4:00 — 1 commitsThu 5:00 — 2 commitsThu 6:00 — 1 commitsThu 7:00 — 2 commitsThu 8:00 — 1 commitsThu 9:00 — 7 commitsThu 10:00 — 11 commitsThu 11:00 — 6 commitsThu 12:00 — 10 commitsThu 13:00 — 7 commitsThu 14:00 — 6 commitsThu 15:00 — 12 commitsThu 16:00 — 9 commitsThu 17:00 — 9 commitsThu 18:00 — 8 commitsThu 19:00 — 18 commitsThu 20:00 — 10 commitsThu 21:00 — 12 commitsThu 22:00 — 8 commitsThu 23:00 — 15 commitsFri 0:00 — 16 commitsFri 1:00 — 8 commitsFri 2:00 — 1 commitsFri 3:00 — 6 commitsFri 4:00 — 1 commitsFri 5:00 — 1 commitsFri 6:00 — 3 commitsFri 7:00 — 7 commitsFri 8:00 — 3 commitsFri 9:00 — 5 commitsFri 10:00 — 9 commitsFri 11:00 — 4 commitsFri 12:00 — 10 commitsFri 13:00 — 3 commitsFri 14:00 — 11 commitsFri 15:00 — 12 commitsFri 16:00 — 11 commitsFri 17:00 — 15 commitsFri 18:00 — 8 commitsFri 19:00 — 15 commitsFri 20:00 — 10 commitsFri 21:00 — 5 commitsFri 22:00 — 6 commitsFri 23:00 — 8 commitsSat 0:00 — 11 commitsSat 1:00 — 8 commitsSat 2:00 — 0 commitsSat 3:00 — 5 commitsSat 4:00 — 1 commitsSat 5:00 — 2 commitsSat 6:00 — 0 commitsSat 7:00 — 5 commitsSat 8:00 — 1 commitsSat 9:00 — 2 commitsSat 10:00 — 7 commitsSat 11:00 — 13 commitsSat 12:00 — 5 commitsSat 13:00 — 10 commitsSat 14:00 — 14 commitsSat 15:00 — 10 commitsSat 16:00 — 3 commitsSat 17:00 — 4 commitsSat 18:00 — 2 commitsSat 19:00 — 7 commitsSat 20:00 — 6 commitsSat 21:00 — 5 commitsSat 22:00 — 11 commitsSat 23:00 — 7 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits603 (58%)
Community commits432 (42%)

1,035 commits in total over the last year.

DateListRankStars gained
Sep 20, 2026weekly#12+990
Sep 19, 2026weekly#12+990
Sep 18, 2026weekly#11+890
Sep 17, 2026weekly#13+873
Sep 16, 2026weekly#8+1,056
Sep 15, 2026weekly#18+778
Sep 14, 2026weekly#18+778
Sep 13, 2026weekly#18+763
Aug 14, 2026monthly#18+2,227
Aug 13, 2026monthly#18+2,227
Aug 12, 2026monthly#15+2,174
  • obra/superpowers

    An agentic skills framework & software development methodology that works.

    305K stars · Shell

  • mattpocock/skills

    Skills for Real Engineers. Straight from my .agents directory.

    303.2K stars · Shell

  • msitarzewski/agency-agents

    A complete AI agency at your fingertips - From frontend wizards to Reddit community ninjas, from whimsy injectors to reality checkers. Each agent is a specialized expert with personality, processes, and proven deliverables.

    164K stars · Shell

  • nvm-sh/nvm

    Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions.

    95.6K stars · Shell

  • tw93/Mole

    🐹 Keep your Mac and PC clean, light, and running like new. Fast open-source CLI, plus native Mac and Windows apps.

    72.6K stars · Shell

  • omacom/omarchy

    Beautiful, Modern & Opinionated Linux

    45.5K stars · Shell