All plugins

factledger

A typed-facts ledger with structural truth — the agent records durable facts (prices, statuses, limits, decisions, capabilities) once and search/show them whenever they matter. For every (scope, subject, predicate) exactly one row is active; a new value closes the previous one (valid_to + superseded_by) instead of overwriting it, so contradictory versions never coexist and history is the audit trail. The full ledger stays queryable on demand, separate from the character-budgeted memory view that is injected every turn. Tools: add, show, search, history, compile, stale, export, check, stats. Local-first TSV store, stdlib only, no network, no credentials. Disclosure — none: no network calls, no shell commands, no background processes, no credential access; every tool reads or writes only the local ledger file.

explorelifehus-engToolsv1.0.0Updated 2 hours ago

About

A typed-facts ledger with structural truth — the agent records durable facts (prices, statuses, limits, decisions, capabilities) once and search/show them whenever they matter. For every (scope, subject, predicate) exactly one row is active; a new value closes the previous one (valid_to + superseded_by) instead of overwriting it, so contradictory versions never coexist and history is the audit trail. The full ledger stays queryable on demand, separate from the character-budgeted memory view that is injected every turn. Tools: add, show, search, history, compile, stale, export, check, stats. Local-first TSV store, stdlib only, no network, no credentials. Disclosure — none: no network calls, no shell commands, no background processes, no credential access; every tool reads or writes only the local ledger file.

factledger

A Hermes plugin that gives the agent a typed-facts ledger with structural
truth
— a durable store for what the agent actually knows, where a new value
supersedes the old one in a first-class audit trail instead of overwriting it.

The ledger is a human-readable, diffable, greppable TSV file. For every
(scope, subject, predicate) exactly one row is active (empty valid_to);
writing a new value closes the previous row (valid_to + superseded_by)
rather than deleting it, so two contradictory versions can never coexist as
equals, and history is the audit trail. Supersedes, never expires — a fact's
valid_from says how fresh it is.

Why you need this

Hermes memory is injected into every turn, so it has a hard character budget.
That budget is a feature — a compact prompt is a cheap prompt — but it means a
fact can fall out of the view while still being true. Factledger keeps the
full ledger queryable on demand: record a fact once, then show/search
it whenever a price, status, limit, decision or capability matters, without
paying to keep it in every prompt. It is the difference between "memory that
fits the prompt" and "memory that outlives the prompt."

Tools

| Tool | Purpose |
|------|---------|
| factledger_add | Record or replace a fact (supersedes the previous one). |
| factledger_show | The active truth for a scope/subject, today or as_of. |
| factledger_search | Find by term across subject/value/predicate/source. |
| factledger_history | What changed and when for a subject. |
| factledger_compile | Compact view within a prompt-character budget. |
| factledger_stale | Active facts older than N days (need re-check). |
| factledger_export | Structured JSON export for reports/watchdogs. |
| factledger_check | Ledger integrity check. |
| factledger_stats | Totals: active/closed rows, scopes. |

Install

hermes plugins install factledger

Every tool returns a JSON string (always, including on error — never raises).

Data location

The ledger lives at <hermes home>/plugin-data/factledger/facts.tsv by default
— inside the active profile's Hermes home, so each profile keeps its own
ledger. To point it anywhere else (e.g. inside an Obsidian vault), set the
db_path setting: Plugins hub → factledger → settings, or
plugins.entries.factledger.settings.db_path in config.yaml. The atomic
replace includes a bounded retry for transient filesystem locks.

Conventions

  • scope = the domain namespace (silktales, legal, market, …).
  • subject = the tracked entity (competitor.x, case.y, mcp.z).
  • source is mandatory and should be verbatim — a fact without a source is
    not written (the rule is explicit).
  • confidence: stated (first-party), derived (computed), assumed.
  • A value is superseded, never deleted — mistakes stay visible and
    reversible.

License

MIT

README from the reviewed commit 77843ab; it updates when the author re-pins.