Hermes-native lifecycle and evidence ledger for software work.
Project description
Memento
Memento is a Hermes-native lifecycle and evidence ledger for software work: it turns vague goals into durable runs, plans, tasks, review gates, dispatch records, and verification evidence that survive chat resets, process restarts, and disposable executor sessions.
Why Memento exists
Agent coding often fails because progress lives in the wrong place: a chat transcript, a TUI buffer, an executor-native session, or a self-reported summary. Memento keeps the source of truth outside those fragile contexts.
Use Memento when you want to:
- keep a canonical plan before implementation starts;
- route work to humans, Hermes, or optional external executors without trusting their summaries blindly;
- record evidence, review gates, approvals, and failures in project-local durable state;
- recover long-running work after compaction, process restarts, or executor crashes;
- report progress in Telegram-friendly Markdown without scraping logs.
What Memento is — and is not
Memento is:
- a Python package and CLI (
memento); - a Hermes plugin entry point (
memento.plugin); - a lifecycle state model for runs, plans, tasks, gates, dispatches, audit events, and evidence;
- a local-first durability layer using project-local SQLite and JSON state;
- an extension boundary for optional workers such as Hermes profiles, Codex, Claude Code, OpenCode, OpenHands-style API workers, or other peers.
Memento is not:
- an OpenCode wrapper;
- a compatibility shim for another lifecycle project;
- a replacement for tests, review, or user approval;
- a tool that treats executor self-report as proof;
- dependent on private TUI/session state for correctness.
Install from PyPI
python -m pip install memento-lifecycle
memento doctor --json
memento sample-smoke --workspace /tmp/memento-sample --json
The PyPI distribution is memento-lifecycle; the installed CLI and Python package remain memento.
Installation
For humans
Copy and paste this prompt into Hermes Agent, Claude Code, Codex, OpenCode, or another local coding agent:
Install and verify Memento by following the instructions here:
https://raw.githubusercontent.com/antchoi/memento/main/docs/guide/installation.md
Or read the Installation Guide. It is written as an executable checklist for agents: create a virtualenv, install dependencies, run doctor, run the smoke contract, and report evidence.
For LLM agents
Fetch the installation guide and follow it exactly:
curl -fsSL https://raw.githubusercontent.com/antchoi/memento/main/docs/guide/installation.md
If you are already in a checkout, the default one-command path is:
scripts/install-local.sh --dev
For a minimal runtime install without development extras:
scripts/install-local.sh
Without installing the console script:
PYTHONPATH=src python -m memento.cli doctor --json
Optional: local agentmemory for Hermes Agent
For cross-session/cross-agent memory, run agentmemory locally on the Hermes Agent machine with Docker and connect Hermes through MCP:
scripts/install-local.sh --agentmemory
Then add the MCP server shown in docs/guide/installation.md, restart Hermes, and verify with:
hermes mcp list
hermes mcp test agentmemory
Keep agentmemory ports bound to localhost unless you explicitly choose remote exposure.
Start in 5 minutes
Run the local smoke contract:
memento sample-smoke --workspace /tmp/memento-sample --json
memento status --workspace /tmp/memento-sample --json
memento report --workspace /tmp/memento-sample
sample-smoke initializes a workspace, runs doctor, creates a sample run, enqueues a task, writes an outbox dispatch, claims/completes it without spawning an executor process, and proves status/report can rebuild from durable project-local state.
First 15 minutes
-
Check readiness
memento doctor --json
-
Initialize a real workspace
memento init --workspace /path/to/repo --json
-
Start a run
memento start --workspace /path/to/repo --goal "Ship the next verified slice" --allow-spike --json
-
Create and approve a canonical plan
memento plan --workspace /path/to/repo --run-id run_... --title "Next slice" --body "Plan body" --json memento approve-plan --workspace /path/to/repo --run-id run_... --plan-id plan_... --json
-
Turn incoming work into a durable task
memento enqueue-event --workspace /path/to/repo --run-id run_... --title "Implement X" --body "Task details" --json
-
Generate a worker payload or dispatch handoff
memento worker-payload --workspace /path/to/repo --run-id run_... --task-id task_... --json memento dispatch-task --workspace /path/to/repo --run-id run_... --task-id task_... --executor hermes-profile --json
-
Record completion with evidence
memento claim-dispatch --workspace /path/to/repo --dispatch-id dispatch_... --executor hermes-profile --json memento complete-dispatch --workspace /path/to/repo --dispatch-id dispatch_... --summary "verified" --evidence-uri file://verification/task.log --json
-
Report status
memento status --workspace /path/to/repo --run-id run_... --json memento report --workspace /path/to/repo --run-id run_...
Core lifecycle
- Run: top-level unit of work tied to a workspace and goal.
- Plan: draft or canonical implementation plan. Normal execution is gated on a canonical plan unless an explicit bounded spike is allowed.
- Task: durable work item from a plan, user request, cron event, webhook, or manual enqueue.
- Dispatch: auditable handoff to a human or optional executor. Dispatch records do not imply work happened unless evidence later proves it.
- Review gate: preflight, plan review, implementation/spec review, quality review, final acceptance, approval, or release gate.
- Evidence: trusted artifacts such as test output, CI status, lint output, verification logs, screenshots, or approval records.
- Report: Telegram-friendly summary reconstructed from state, not from hidden executor memory.
Command map
Read the full command guide in docs/commands.md. The main workflows are:
- setup and health:
doctor,init,sample-smoke; - lifecycle:
start,plan,approve-plan,pause,resume,cancel,status,report; - tasks and handoff:
enqueue-event,worker-payload,dispatch-task,list-dispatches,claim-dispatch,complete-dispatch,fail-dispatch; - verification and context:
context-bundle,route-task,verify-task,graph-status,graph-update,memory-prefetch,memory-writeback; - v3 worker platform:
record-external-check,record-approval,record-graph-diff,select-patch,release-gate,recover-jobs; - review:
review.
Hermes plugin boundary
The local Hermes plugin entry point is memento.plugin:register. The package also advertises the Python entry point group:
[project.entry-points."hermes_agent.plugins"]
memento = "memento.plugin"
The registration boundary is intentionally runtime-light. A Hermes-like context only needs:
ctx.register_command(name, handler, **metadata)
doctor and tests/test_plugin_registration.py are the executable registration contract.
Documentation
Start here:
docs/README.md— documentation map.docs/guide/installation.md— agent-executable installation, dependency setup, Hermes plugin enablement, and local agentmemory Docker integration.docs/guide/publishing.md— PyPI/TestPyPI release checklist and GitHub Actions Trusted Publishing setup.docs/getting-started.md— first smoke test and first run after installation.docs/concepts.md— lifecycle concepts and trust model.docs/commands.md— command reference by workflow.docs/operators-guide.md— safety, recovery, cron/events, reporting.docs/architecture.md— implementation architecture and extension points.docs/user-guide.md— compact end-to-end guide.
Development verification
python -m pytest -q
python -m ruff check .
python -m compileall -q src tests
PYTHONPATH=src python -m memento.cli doctor --json
PYTHONPATH=src python -m memento.cli sample-smoke --workspace /tmp/memento-sample --json
scripts/verify-local.sh
Seed and acceptance criteria traceability
The implementation history is driven by the Ouroboros source Seed at .ouroboros/seeds/memento.seed.yaml and follow-on phase seeds:
.ouroboros/seeds/memento.seed.yaml.ouroboros/seeds/memento-mvp.seed.yaml.ouroboros/seeds/memento-v1.seed.yaml.ouroboros/seeds/memento-v2.seed.yaml.ouroboros/seeds/memento-v3.seed.yaml
Acceptance-criteria tokens retained for traceability:
AC01_repo_bootstrapAC02_plugin_registrationAC03_command_surfaceAC04_draft_to_canonical_planAC05_durable_stateAC06_kanban_boundaryAC07_preflight_safetyAC08_destructive_guardrailsAC09_worker_contextAC10_review_gatesAC11_reportingAC12_cancellation_pauseAC13_bundled_skillsAC14_documentationAC15_no_opencode_dependencyAC16_test_suiteAC17_lint_type_baselineAC18_seed_traceabilityAC19_actor_input_output_runtime_closureAC20_cron_event_to_task_onlyAC21_role_last_action_visibilityAC22_sqlite_fallback_contract
Use the seed files for detailed acceptance criteria. The README stays focused on first success and orientation while preserving mechanical traceability.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memento_lifecycle-0.1.0.tar.gz.
File metadata
- Download URL: memento_lifecycle-0.1.0.tar.gz
- Upload date:
- Size: 94.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4d56715fee564533ae57398953745202192b4fa9d7da3c7842bfbc14b9364bb
|
|
| MD5 |
46038611024a856223f93f983c6cc331
|
|
| BLAKE2b-256 |
4b49bfacc7d620b10b0f9a03cab450dc93a7e131fdf29825c49b19da2e774778
|
Provenance
The following attestation bundles were made for memento_lifecycle-0.1.0.tar.gz:
Publisher:
publish.yml on antchoi/memento
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
memento_lifecycle-0.1.0.tar.gz -
Subject digest:
a4d56715fee564533ae57398953745202192b4fa9d7da3c7842bfbc14b9364bb - Sigstore transparency entry: 1578303133
- Sigstore integration time:
-
Permalink:
antchoi/memento@3054c263a59ddbf73d745538256c4b51546c3098 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/antchoi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3054c263a59ddbf73d745538256c4b51546c3098 -
Trigger Event:
release
-
Statement type:
File details
Details for the file memento_lifecycle-0.1.0-py3-none-any.whl.
File metadata
- Download URL: memento_lifecycle-0.1.0-py3-none-any.whl
- Upload date:
- Size: 53.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a1c781a69b5777c02d09884152ce98a275a82a8d62602a2e155b8a560d11f97
|
|
| MD5 |
546031edfc74dd726e8b19419e0060b6
|
|
| BLAKE2b-256 |
cdaa0cfb4a85142da74865b3ae28c7262ebe16da1513aef074e2adc908d8b03b
|
Provenance
The following attestation bundles were made for memento_lifecycle-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on antchoi/memento
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
memento_lifecycle-0.1.0-py3-none-any.whl -
Subject digest:
8a1c781a69b5777c02d09884152ce98a275a82a8d62602a2e155b8a560d11f97 - Sigstore transparency entry: 1578303367
- Sigstore integration time:
-
Permalink:
antchoi/memento@3054c263a59ddbf73d745538256c4b51546c3098 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/antchoi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3054c263a59ddbf73d745538256c4b51546c3098 -
Trigger Event:
release
-
Statement type: