elen_commit
Commits a new decision to the graph, with its constraints as a plain-text list.
textrequireddomainconstraints
io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 7, 2026
Local decision memory for coding agents: record decisions with limits, search precedents, supersede.
Local decision memory for coding agents: record decisions with their constraints, search precedents, and supersede old calls.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
decisiontrail is a local decision memory for coding agents. When an agent makes a call — which database, which cache, which release cadence — decisiontrail records the decision together with the limits it was made under, so a later session can find the precedent instead of re-deciding from scratch, and can revise it explicitly when the call changes.
Everything is local: decisions live in one JSON file on your machine. There is no account, no login, and no network access. Records can be plain commits or validated decision records (constraints, evidence and an answer); validated records are the ones precedent search draws on. Old decisions are never edited in place — a revision creates a new record and marks the old one superseded, linked in both directions.
This package is a clean-room rebuild of the local surface of the
"elen" MCP server (10 of its 12 tools). The original's two
connected-mode beta tools, elen_incoming and elen_team_search,
need a hosted workspace, a login and an API key, and are not included.
Or run the container image:
The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead. If you run the container, mount a volume over the store directory if you want decisions to persist.
DECISIONTRAIL_DB environment variable, or
~/.decisiontrail/decisions.json by default.DECISIONTRAIL_AGENT and DECISIONTRAIL_PROJECT name the
namespace reported by elen_status; both default to local.Decision IDs are sequential: d-1, d-2, … in creation order.
One bin serves both faces. Each tool is a subcommand taking a single JSON argument (optional for the no-argument tools); results print as JSON.
Exit codes: 0 on success, 1 for a domain error (for example an
unknown decision ID — the error names the ID), 2 for usage errors
and invalid arguments.
MCP client configuration:
elen_suggest and elen_search_precedents rank by case-insensitive
token overlap between the query and a record's text plus constraints:
the score is the number of distinct query tokens present. Records with
no overlap are omitted; ties are broken by recency, newest first.
A record counts as validated only when it was created with
elen_log_decision. A committed decision that is later superseded
keeps its history: supersedes / superseded_by link the chain and
the old record's status becomes superseded.
MIT — see LICENSE.
Source: README.md at commit 6169cda
Commits a new decision to the graph, with its constraints as a plain-text list.
textrequireddomainconstraintsCreates a validated Decision Record from constraints, evidence and an answer.
textanswerrequireddomainevidencerequiredconstraintsrequiredExpands a decision ID into its full constraints and text.
idrequiredRetrieves short pointers to prior decisions before you make a new one.
limitqueryrequiredSearches validated decisions for precedents.
limitqueryrequiredRevises an older decision and marks it superseded by a new one.
idrequiredtextrequireddomainconstraintsGives an overview of active decision threads grouped by domain, for the start of a session.
Takes no parameters.
Returns the agent, project, database path and counts, to check the namespace before committing.
Takes no parameters.
Shows the competency profile for this agent, built from its validated decision history.
Takes no parameters.
Suggests clusters and duplicate or stale candidates without changing the graph.
Takes no parameters.
90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
npx @reneturcios/decisiontrail elen_statusdocker run -i ghcr.io/cloudcorprecords/decisiontrail# Check the namespace before committingdecisiontrail elen_status
# Commit a decision with its limitsdecisiontrail elen_commit '{"text":"Use Postgres for sessions","constraints":["must be durable"],"domain":"storage"}'
# Record a validated decisiondecisiontrail elen_log_decision '{"constraints":["latency under 100ms"],"evidence":["benchmark run 42"],"answer":"Adopt the in-process cache","domain":"performance"}'
# Before a new decision, ask for pointers; then search validated precedentsdecisiontrail elen_suggest '{"query":"session storage"}'decisiontrail elen_search_precedents '{"query":"session storage"}'
# Read one record in full, revise one, survey the storedecisiontrail elen_expand '{"id":"d-1"}'decisiontrail elen_supersede '{"id":"d-1","text":"Use Redis for sessions with Postgres fallback"}'decisiontrail elen_get_contextdecisiontrail elen_get_competencydecisiontrail elen_consolidate
decisiontrail --versionnpx -y @reneturcios/decisiontrail mcp{ "mcpServers": { "decisiontrail": { "command": "npx", "args": ["-y", "@reneturcios/decisiontrail", "mcp"] } }}npm installnpm run build # tsc -> dist/npm test # node test runner over test/*.test.ts, temp dirs, no networknpm run dev # run the CLI from source via tsx