English · Türkçe

Forgelore

Your agent solved this error last week. It does not remember. Forgelore does.

Forgelore is a single static Go binary with no runtime dependencies. It fingerprints a failed command's error, and when the same error comes back — in a different file, through a different command, on a colleague's machine — it hands your coding agent the one line that fixed it last time.

When it has nothing to say, it says nothing and costs nothing.

What it looks like

Forgelore: one error, recorded once, found again The same transcript is in site/demo.txt as plain text. $ go build ./... # example.com/app/cmd/app cmd/app/main.go:4:2: undefined: greet $ forgelore recall --command "go build ./..." --error-file err.txt 1 error(s), 0 with something recorded cd023fb609411574 undefined: greet nothing recorded $ forgelore record --type fix \ --title "greet lives in internal/greeter; import it" \ --command "go build ./..." --error-file err.txt 01M45XT2HS8G3PXDBRTWWV3449 .forgelore/records/01M45XT2HS8G3PXDBRTWWV3449.md fingerprint cd023fb609411574 $ go vet ./... # example.com/app/internal/svc vet: internal/svc/svc.go:4:2: undefined: greet $ forgelore recall --command "go vet ./..." --error-file err2.txt 1 error(s), 1 with something recorded cd023fb609411574 undefined: greet fix 01M45XT2HS8G3PXDBRTWWV3449 greet lives in internal/greeter; import it
Real output from v0.1.1. The fingerprint is the same in both halves because the file, the line and the subcommand are not part of it — the error is. The same transcript is readable as text in demo.txt.

Install

curl -fsSL https://raw.githubusercontent.com/forgeprint/forgelore/main/scripts/install.sh | bash

Or, if npm is the idiom you already have:

npm install -g forgelore

Both give you the same binary. No sudo, nothing outside your home directory, no runtime to install alongside it.

Use it in five minutes

1. Create the store

cd your-project
forgelore init --with-git-hook

That writes .forgelore/records/, which is meant to be committed, and a .gitignore that keeps the index, the ledger and your personal scope out of git. The git hook refuses a commit that would carry a secret into a shared record.

2. Record the first fix

When a command fails and you work out why, keep the answer:

go build ./... 2> err.txt
forgelore record --type fix \
    --title "greet lives in internal/greeter; import it" \
    --command "go build ./..." --error-file err.txt

A title states the answer, not the question. "greet lives in internal/greeter; import it", never "greet is undefined".

3. Let it answer by itself

Wire your agent up once and you stop running recall by hand — the hint arrives when the error does. The agents page has the wiring for each one.

4. Share it

forgelore promote <record id>      # move it from your scope to the team's
git add .forgelore/records && git commit

Your colleagues get it on their next pull. There is no server.

It measures whether it helped

Forgelore assigns sessions to a treatment and a control arm — the control gets no injections — and compares them.

forgelore report --days 7

The report says plainly when a difference is not meaningful, which with a small sample it usually is not. That is the intended answer rather than a disappointing one: a tool that claims a saving it has not measured is worse than one that admits it cannot tell yet.

Which agents it supports

AgentChecked against a running agent
Claude Code 2.1.290hooks, both MCP protocol eras, usage readerA
Copilot CLI 1.0.91hooks onlyB
Gemini CLI 0.62.0hooks onlyB
Cursor 2026.10.01hooks onlyB
Codex CLInothing yetunverified

A tier describes what has been checked against a running agent, not what its documentation promises. Every mapping in this project started as a reading of official docs, and every one of them was wrong somewhere that would have left Forgelore silent — so a capability nobody has exercised is listed as not measured.

Any agent that can run a shell command works today without any wiring: forgelore init prints the line to add to your AGENTS.md.

What it will not do

Verify what you installed

gh attestation verify forgelore_linux_amd64 -R forgeprint/forgelore
npm audit signatures

Release artifacts are built by a tag-triggered workflow and attested there; the npm packages are published by that same workflow over OIDC, with provenance. Verification prints nothing when it succeeds — the exit status is the answer.