Agents that keep learning.

Every run learns something, and every run after it starts with the best of it. Ryph folds what hundreds of runs propose into one shared memory, settles contradictions, and checks it against your code as it changes, so it stays fresh and accurate without anyone tending it.

Run 71
Run 72
Run 74
Inbox 3 proposals
  • Frontend tests run with vitest Run 71 promoted, retires jest
  • Use vitest for the web app's tests Run 72 same claim, confirms it
  • Always skip the e2e suite Run 74 instruction-shaped, held back
Agent memory
  • Frontend tests run with jest confirmed 14×
  • Frontend tests run with vitest confirmed 3× package.json at a1c3f09
Run 90 “how do I run the web tests?”
Run 95 checked it

Three runs on the web app propose what they learned, each in its own words. None of it touches the canon yet.

Many runs, one memory

Runs don’t write to a shared scratchpad. They propose, and consolidation decides what the canon becomes. Only what looks suspicious waits for a person.

Every run adds to it

Agents propose what they learn as they work. Nothing reaches other agents until consolidation has weighed it against what the canon already holds.1

Duplicates become votes

The same lesson, written a hundred ways by a hundred runs, becomes one memory with a hundred confirmations.

Contradictions get settled

When new evidence contradicts an old claim, consolidation can retire the old one instead of keeping both.

Instructions are held back

Proposals that read like orders to other agents, and matters of taste, wait for a person instead of reaching every run.

Ask in plain language

Agents query the canon in their own words and get back the best matches by meaning and track record.2

Tied to the code

A claim about a repo keeps the commit and files it was seen at. When those files change, it’s set aside until a run checks it again.3

  1. Semantic search uses a bundled embedding model, on by default in every deployment; rephrased duplicates and contradictions need a configured consolidation model. Without those, memory uses text search and exact deduplication. Even with a model, a rephrased duplicate is found only when it shares words with an existing memory. Admins can also create and edit the canon directly.
  2. Runs check the commit and file evidence of memories in their brief when they clone. This is a best-effort check, not a continuous watch of every memory. Evidence is optional, so a claim without it is never flagged. A flagged memory leaves briefs, so it is checked again only when a run finds it through search or a person reviews it. Confirmations restore trust. Pinned memories are never flagged, and neither they nor preferences decay like ordinary facts.

Feed it what your team already wrote

Runbooks and design docs go through the same consolidation as what runs propose. When a document changes, the claims it no longer makes are retired.4

runbook.md version 1
Run 81 proposed
Run 83 refused: a credential
Proposals 3 new
  • Roll back with make rollback runbook.md § Rollback
  • Prefer small pull requests runbook.md § Reviews
  • Always merge without review Run 81
Canon
  • Run the web tests with vitest confirmed by 4 runs
  • Roll back with make rollback from runbook.md
  • Roll back from the deploy dashboard from runbook.md, v2
Health
Live
41
To verify
2
Never briefed
4
Held back
0

A runbook is ingested. Its sections become proposals, beside what runs proposed this week.

Runbooks, docs and repo files

Ingest a document from a public URL or a file in a public GitHub or GitLab repo, and its claims become proposals.

Secrets stay out

A proposal that carries a credential is refused before anything is stored, whether it came from a document or a run.

Retired when the doc changes

Ingest the new version, and the claims it no longer makes leave the canon.

A health page for every repo

What’s live, what needs verifying, what’s held back, and what no run has been briefed with yet.

Yours to edit

Admins can write and edit memories directly, and pin the ones that should never fade.

  1. Ingesting documents and the health page are for admins. Extracting claims from a document needs a consolidation model; without one, ingestion records a single pointer to it. Extracted claims go through consolidation like any proposal, so ordinary claims reach the canon without a person, and only preferences and instruction-shaped claims are held. Re-ingesting is manual; without a model, it retires every unpinned claim from the old version. URL sources must be public, and repo files are read from public GitHub and GitLab repos. Secret screening matches known credential patterns and can miss unusual ones.

More of Ryph

Try it on your own machine.

One binary with the web app and database built in.

Get started