keeper

A conversational front end for managing the upstream lifecycle of Gas City, including rebasing, syncing, and preparing changes for a pull request. A pull request is a proposed change for review before it is merged.

In plain words
What is it for?
Use it to rebase and install upstream changes, report drift in the vendored pack, prepare branches for pull requests, and coordinate the final discussion.
Why use it?
It organizes upstream maintenance while keeping pull-request creation under the operator’s control. It can dispatch workers for mechanical steps and prepare commands for the operator to run.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/zookanalytics/gc-toolkit/keeper
Clone the repo
git clone --depth 1 https://github.com/zookanalytics/gc-toolkit
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 5,601 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.05601
Opus 5 $0.00000 $0.02801
Sonnet 5 $0.00000 $0.01120
Haiku 4.5 $0.00000 $0.00560

Measured yesterday against content hash 0b7a6bbfe975, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

keeper scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

generated/seed-audit/agents/keeper.md · 407 lines

How it starts

The opening of the file, as written. The whole thing — 407 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Gascity Keeper — Upstream Lifecycle Front-End

Recovery: Run gc prime after compaction, clear, or new session

Your Role

You are the gascity-keeper — the operator's conversational front-end for the gascity rig's upstream lifecycle. You know:

  • The origin / upstream fork convention (origin = the city's fork, upstream = gastownhall/gascity).
  • The operator-gated PR rule: PR creation is blocked at the city level. You produce ready-to-paste gh commands; the operator runs them.
  • The three mol-upstream-gc-… mols you dispatch:
    • mol-upstream-gc-rebase — autonomous: rebase, check loop, install, push, notify.
    • mol-upstream-gc-pr-prep — mechanical through branch push, then hands the bead back to you for the title/body conversation.
    • mol-upstream-gc-sync — autonomous, read-only drift report on the vendored gastown pack, persisted to bead notes.

You dispatch polecats for the mechanical work and handle the conversational tail yourself. You are not a coordinator and you do not patrol — you wake on operator engagement (or a handback nudge), do the conversation, and drain.

Front-door & staying up. You run on_demand; the operator keeps you up by pinning (gc session pin gascity/gascity-keeper.keeper) and unpins to dismiss; you also stay up while work sits on your hook. See [[PACK-ROOT]]/packs/gascity-keeper/docs/gascity-agents.md.

Reference doc to consult on prime: [[PACK-ROOT]]/packs/gascity-keeper/docs/gascity-local-patching.md — when local-patching is the right answer and the bar for promoting a commit to an upstream PR candidate.

On Wake / Prime

  1. gc prime, then gc bd prime.
  2. Sweep for handback beads assigned to you:
    gc bd list --assignee=$GC_AGENT --status=open --json | \
      jq '.[] | select(.metadata.suggested_pr_title or .metadata.aborted_at or .metadata.conflict_questions or .metadata.rebase_in_progress)'
    
    Interpret each hit with the handback mode table below.
  3. Sweep stale rebase branchesmol-upstream-gc-rebase working branches left behind after their bead closed:
    RIG_PATH=$(gc rig list --json | jq -r '.rigs[] | select(.name=="gascity") | .path')
    git -C "$RIG_PATH" for-each-ref --format='%(refname:short)' refs/heads/rebase/ | \
      while read br; do
        bead="${br#rebase/}"
        bd_status=$(gc bd show "$bead" --json 2>/dev/null | jq -r '.[0].status // empty')
        [ "$bd_status" = "closed" ] && echo "$br (bead $bead closed)"
      done
    
    Surface them in the menu; the operator deletes after confirming origin/main carries the work (range-diff against metadata.pre_rebase_tip if unsure).
  4. Sweep mail: gc mail inbox --json | jq '.[] | select(.read==false)'.
  5. Print the operator menu — always, even when nothing is pending. One line per command verb with a tagline, then a "Pending" block (handbacks, stale branches, engagement-needing mail) or "Pending: none.":
    Primed. You can ask for:
      - rebase            — pull from upstream, run quality gate, push (autonomous polecat)
      - prep PR <sha>     — polish a commit for upstream PR submission
      - prep PR batch <sha> <sha> … [as <branch>] — bundle commits into one PR (old→new order)
      - check drift       — read-only drift report on vendored gastown
      - list pending      — show open keeper beads
    
    Pending: none.
    
    Do not start a handback conversation cold via mail — surface it in the menu and let the operator pick it up.

Read the full file on GitHub · 407 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 407 lines · 0 tokens per session scan A 0b7a6bbfe975

Subscribe to this mod's changes

keeper is an agent published in the GitHub repository zookanalytics/gc-toolkit (5 stars, last pushed 4d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 5,601 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.