
Estigia
io.github.asanabrial由 GitHub 账号 asanabrial 发布v0.1.1更新于 Oct 31, 2026
Guardrails for AI coding agents: verified claims, reviews bound to exact commits, gated merges.
概览
一个本地护栏工具,让 AI 编码代理的认领、评审与合并都能对照本地工作流存储和 git 钩子得到验证。
- 可以做什么
- 校验与追踪认领:检查有效认领、列出工作流状态、读取评审状态与评审输入、列出任务与会话。
- 记录工作流动作:认领议题、切换状态、评论、标记阻塞、管理任务、心跳与交接。
- 执行评审:发布与重新发布评审、记录发现与处置、升级评审、收集评审输入并运行声明的检查。
- 交付工作:起草并准备拉取请求、记录花费、在已评审的提交处交付并发布。
- 协调会话:通过本地存储发送消息、提问、等待并读取收件箱。
- 适用场景
- 当多个 AI 代理或会话同时写入同一仓库,且你希望推送、评审和合并都以已记录的认领和绑定到确切提交的评审结论为前提时使用。适合需要确定性证据和按风险分级评审、而不愿只信任代理自述的团队。
- 运行要求
- 以本地二进制运行,可通过安装脚本、npm 包或 cargo 安装;Linux 归档需要 glibc 2.39+。setup 会写入代理的指令文件和钩子,推送守卫需在每个仓库单独安装。GitHub 部分依赖 gh 命令行工具和 git 远程仓库。
安装
在 SourceWeft 中
- 打开 控制台中的 Estigia,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
[estigIA — AI harness. Light. Local. Agentic.]
[CI] [License: MIT] [Rust 1.97+] [MCP: 37 tools] [Linux, macOS, Windows] [Glama MCP server]
estigIA — workflow authority for AI coding agents
Your agent says it claimed the issue, that the review passed, that the branch is current. Estigia
turns those sentences into things that were checked: the claim lives in a local store
(~/.estigia/state.db), every later write is measured against it, every step that cannot be undone
re-verifies it, and a review verdict is bound to exact bytes, so a push invalidates it.
One binary, under whatever agent you already use; it does not run your model. Its only detached processes are a reviewer CLI and the declared checks (which).
El río del juramento. Lo que un agente promete, queda ligado a unos bytes exactos.
Leteo is the river of forgetting. Estigia is the river of the oath — the gods swore by its waters, and perjury cost nine years outside Olympus. Two rivers of the same underworld, opposite jobs: one makes you forget, the other holds you to it.
What it feels like
Mostly, nothing: a run that has claimed nothing works as before. When it refuses, it says what it read and what to do about it:
The tracker could not be read is a different answer from you may not push, and Estigia will not turn the first into the second. That distinction is most of the design.
FLOW — Focused, Lean, Outcome-driven, Witnessed
FLOW is Estigia's own methodology: how a run takes a piece of work from an issue to a merge.
- Focused: small work stays small. Understood work is done directly, not planned, and exploration is in proportion.
- Lean: one writer, the smallest topology that works, and review only as heavy as the risk.
- Outcome-driven: done means the issue's acceptance criteria hold, with evidence, merged and verified.
- Witnessed: deterministic evidence first, then review by a context that did not write the change, and the merge at the reviewed head.
It rests on two pillars: the claimed issue is the record of the work, and the publication is the
review candidate. Four principles follow from them: small work stays small; review is sized by risk;
a review lineage gets a bounded number of corrections (Corrections per lineage, default 3); and the
heavyweight two-judge review (Judgment Day) runs only when asked for.
You start it with flow (analyse and build, choosing the next issue from the tracker), flow dev [issue] (build) or flow triage (analyse and file at most one evidenced issue). A run then goes
through five steps, which may merge or repeat:
Work that spans sessions or divides into units with their own acceptance keeps an ordered checklist
on the claimed issue (task), never in a file. FLOW is how a run works; the workflow below is what
Estigia enforces while it does.
The workflow
The workflow is the part a run cannot talk its way around: the states an issue moves through and the checks at each boundary. FLOW runs inside it.
Rounded nodes are states, square nodes are actions; dotted edges are the exceptions. What the gate holds at each boundary:
- One state at a time, in the local store; labels are a projection, written and read back.
blockednames an exact exit condition and who discharges it. - A claim before the first write. The earliest live claim wins, and the gate re-verifies it on every write it sees and at every irreversible step.
- A verdict bound to exact bytes — epoch, head, base and digest. Any push invalidates it:
republish and ask again. A body says
Refs #<n>, never a closing keyword. - Release last, after the evidence is posted (details).
The contract an agent reads is skill/SKILL.md; the GitHub half is
delivery.md; review cost per tier is in
review-cost.md.
Install
Pick one route. Each is copy-paste.
Linux, macOS:
Windows (PowerShell):
npm (installs and sets up in one step):
Cargo (needs Rust):
Then register it in your agents, and check:
Linux archives need glibc 2.39+ (not Debian 12, Ubuntu 22.04, RHEL 9); there, use cargo install estigia.
The installers check the archive against its published checksum and refuse a mismatch. The binary
lands in ~/.local/bin/estigia (%LOCALAPPDATA%\estigia\bin\estigia.exe on Windows);
ESTIGIA_INSTALL_DIR moves it and ESTIGIA_VERSION takes a tag other than the latest. The npm
package carries no binary: it fetches the same archive, and it is what the
MCP registry entry starts (mcp-name: io.github.asanabrial/estigia). A source build has no installer record, so the
commands that write into your agents ask for --allow-source-build (why);
cargo install --git https://github.com/asanabrial/estigia takes main. The Dockerfile
builds a server-only image; none is published.
Set it up in your agents
Installing the binary changes nothing on its own.
-
estigia tuiopens the setup screen;sshows what it will write. Without it:estigia setup claude-codefor one agent,estigia setup --allfor all;--dry-runon either writes nothing. -
Optionally route a role to a model, the spelling the screen ends by printing:
-
In a repository where any agent may write,
estigia guardinstalls apre-pushhook that refuses a push no live claim authorises, whoever typed it.
setup installs the skill, a directive in the agent's instruction file and the hooks, which go into
every agent with an event able to refuse — five of them, in a gate that reads five dialects. What else it
writes is in what it writes.
Verify
estigia status: what is installed, where, and whether each agent is told (tools on) and stopped (gate on).estigia doctor: skill, gh, remote, guard, prune, permission and the rest, read-only.estigia sessions,feed,where,needs-personandchanges(uncommitted work) are read-only too.
Uninstall
Uninstall removes what Estigia created and nothing else: not another tool's block, not your notes, not a file of its own you have since edited, which it keeps and names. Run in this order:
- The dry run is safe to repeat;
estigia uninstall claude-codeleaves the other agents alone. uninstall --alltakes Estigia out of every agent.guard --uninstallremoves only a hook Estigia wrote, and must go before the binary, which the hook calls.config forgetremoves<checkout>/.git/estigia/, the repository settings every uninstall survives; it says which file it removed.- Remove the binary by the route you installed with. Installer script or npm: delete
~/.local/bin/estigia(or$ESTIGIA_INSTALL_DIR/estigia); on Windows delete%LOCALAPPDATA%\estigia\bin\estigia.exe(or under%ESTIGIA_INSTALL_DIR%) and take that directory out of the userPATH. A source build:cargo uninstall estigia.
Before rm -rf ~/.estigia: state.db is the workflow store, one copy on this machine: claims,
states, receipts, findings, verdicts, spend, tasks, the decision history, the session registry and the
mailbox. Beside it: run pointers; jobs/; snapshots/ (up to three copies of the store);
lifecycle/ (the binary's provenance records); workspaces/ and roots/; the screen's language; your
checkouts list. The last uninstall --all takes the store and the run state and keeps the rest
(per entry). Delete it
only when you no longer want the history of what this machine's gate decided.
What REPLACE and OVERWRITE mean is in docs/what-it-writes.md.
A harness, not a document
The contract under skill/ is text an agent may ignore, so Estigia holds the tools: a PreToolUse
gate, a Stop hook, a pre-push hook under git, and thirty-seven operations with schemas below. The local store is the
authority; the tracker keeps a projection that never decides. The diagram, the loop plugins and the
gate's rules are in what it writes.
The tools
Thirty-seven operations, table-driven. Thirty-one map to operations the binding must provide;
send_message, ask, wait, inbox and list_sessions are answered by the local store and deliver composes
the rest with the merge gate, outside the binding. tools/list carries each schema and a
readOnlyHint. The seven delivery tools (claim, publish_review,
collect_review_input, deliver, release, transition, review_status) carry _meta["anthropic/alwaysLoad"]; every tool takes
compact (cost):
where, feed, status and flush are commands of estigia rather than tools; asking for one of them, or for a
name the surface dropped, answers what replaces it. review_read also reads the review tier (view: tier) and the
delivery target (view: target); collect_review_input also starts a reviewer (launch) and runs the declared checks
(checks); deliver stops after the verdict or the CI release with until.
Thirty-seven tools. The contract names seventeen operations every binding must map; the tools absorbed some under a surviving name (why). Arguments are in each tool's schema.
Configuration
Thirty-two typed settings, in docs/configuration.md, grouped by theme and shown
in one order by estigia config list, the setup screen and the reference alike. Each row says whose
answer it is: this agent's, this repository's, every checkout's or this machine's.
The ratchet
A message may name a command only when running it discharges the block; a refusal carries a typed code and a runnable resolution (classes):
What this instrument does not measure
docs/honesty.md names what this crate does not check, each with the
measurement that found it; docs/README.md maps the rest of the set.
Layout
AGENTS.md — which CLAUDE.md is a link to — is how an agent works here.
Exit codes
Four, and none of them means "something went wrong":
Why there are four: docs/refusal-classes.md.
Licence
MIT. Files derived from another MIT-licensed project carry its notice in THIRD_PARTY_NOTICES.md.
来源:README.md,提交 bb6bd66
工具
0版本历史
1- v0.1.1最新Oct 17, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分