A human traceability ledger for agent work: what was asked, when it ran, and where the evidence is.
Meridian keeps one Markdown note per project in your Obsidian vault. Each task in it records the request, the run (dates, repository, branch) and a trace that points to the evidence.
Division of labour: Meridian records and points; gentle-ai (v4, Organic Driven Development plus Engram) generates, executes and remembers the work. Meridian does not plan or orchestrate: /mdn-run records the task before work starts, lets ODD do the work, then fills the metadata from git and moves the task to review for you.
One task from request to archive. Editable source: docs/diagrams/meridian-flow.html.
| gentle-ai produces | Meridian records |
|---|---|
odd/tasks/<slug>.md, the task document, in the repository |
The task line with its status in project.md |
| Work-unit commits on the feature branch | The Run block: start and end, repo, branch, base |
An Engram mirror under the topic odd/<slug>/tasks |
The Trace: link to the odd/ document (a Windows UNC path), commits, PR |
The monthly log logs/YYYY-MM.md and the dashboard |
How the two connect:
- gentle-ai v4 has no workflow commands to learn. ODD applies to every request by itself;
/mdn-runis the only trigger Meridian adds. /mdn-runwrites the task to the vault note before the work, then asks ODD to use the task slug as the feature name (odd/tasks/<slug>.md).- If the Meridian config has a
delivery:sentence, it is passed to ODD verbatim. /mdn-runruns in the main thread, never as a subagent, and never toggles gentle-ai's receipt-driven review switch.- Run and Trace are filled from git and
ghbymdn-trace.sh, not from the model's own summary. - Review is yours: the run ends in
review, and only/mdn-donecloses a task.
What is not guaranteed:
- The model can ignore the slug. Meridian then records the real document name it detects.
- Small tasks create no ODD document. The Trace then carries commits and a diffstat only.
- Skill steps are instructions; how faithfully they are followed depends on the model.
- gentle-ai may ask you questions mid-run;
/mdn-runwaits for your answer. - Meridian cannot ask ODD for its progress. Task state comes from the run itself.
- Windows UNC links are meant for WSL; elsewhere they are plain text pointers.
| What | Where |
|---|---|
| Config, scripts, templates | ~/.config/meridian/ |
| Project note with all tasks | <vault>/meridian/<project>/project.md |
| Archived tasks and events | <vault>/meridian/<project>/logs/YYYY-MM.md |
| Dashboard (Dataview) | <vault>/meridian/dashboard.md |
| ODD task document | <repo>/odd/tasks/<slug>.md |
| Engram mirror | topic odd/<slug>/tasks |
- An Obsidian vault (any folder of Markdown works; Obsidian is only the viewer).
- Claude Code with gentle-ai v4.0.0 or later for
/mdn-run. SDD was retired in v4 and ODD is the default workflow, which/mdn-runrelies on. Codex gets the skills installed, but the ODD flow is only designed for Claude Code with gentle-ai. git(required by/mdn-run);ghoptional, for the pull request field.- bash, awk, sed, grep and coreutils for the helper scripts (the lint script was tested with gawk). Links to repository documents are Windows UNC paths and are meant for WSL; elsewhere they are plain text pointers.
# Claude Code (default)
bash <(curl -fsSL https://raw.githubusercontent.com/BorjaIP/meridian/main/install.sh)
# Codex
bash <(curl -fsSL https://raw.githubusercontent.com/BorjaIP/meridian/main/install.sh) --tool codex
# From a local checkout (no network), previewing first
git clone https://github.com/BorjaIP/meridian && cd meridian
bash install.sh --source . --dry-run
bash install.sh --source .Options: --tool claude|codex|all, --source <dir>, --dry-run. The installer is idempotent. It writes:
| What | Where |
|---|---|
| Skills | ~/.claude/skills/mdn-*/ (and ~/.codex/skills/ for Codex) |
Helper scripts (mdn-lint.sh, mdn-trace.sh, mdn-migrate.sh, mdn-log.sh, mdn-index.sh) |
~/.config/meridian/scripts/ |
| Templates | ~/.config/meridian/templates/ |
Skills from older Meridian versions that no longer exist are moved (not deleted) to ~/.config/meridian/retired-skills-<date>/, together with a backup of any installed skill it overwrites.
Open a new Claude Code session after installing or updating: a running session keeps the skill text it loaded at the time (observed while testing this repository).
/mdn-init name:my-app # first run asks for your vault path
/mdn-run "add rate limiting to the login endpoint"
/mdn-daily # what needs you today
/mdn-done add-login-rate-limit # accept the result after reviewing it
Every command other than /mdn-init checks that Meridian is initialized and, if not, runs init for you first.
| Command | What it does |
|---|---|
/mdn-init |
Create the vault project note; fills the description from the repo. |
/mdn-add |
Queue a task (agent or human) without running it. |
/mdn-run |
Record a task, run it through ODD, complete Run and Trace, set review. |
/mdn-done |
Accept a task in review (or send it back with a reason). |
/mdn-daily |
Everything that needs your attention today. |
/mdn-status |
Counts by status and owner across projects. |
/mdn-archive |
Move done tasks to the monthly log logs/YYYY-MM.md. |
backlog -> in-progress -> review -> done, plus blocked. review means "look at the result", not "it is correct"; only you move a task to done. The exact file format, the Run and Trace blocks and the state machine are specified in docs/protocol.md, and scripts/mdn-lint.sh <project.md> validates a note.
- The Markdown protocol is agent-agnostic; the installers are not. Only Claude Code and Codex installers exist.
- Skills are instructions for a model. How faithfully they are followed depends on the model; the scripts and
mdn-lint.shexist to check the parts that can be checked mechanically. - Metadata comes from git and
gh, not from the model's account of itself. - The one-line
curlinstall and the Codex installer have not been run end to end; the tested install path is a local checkout with--source. - The
/mdn-runflow was validated end to end in a sandbox and on the author's own vault. It has not been verified in a fresh session by other people, and it has no automated tests. - The flow diagram was rendered and checked by eye only, in a rasterizer with a fallback font; the intended fonts and GitHub's rendering were not checked.
- The vault and the repository are separate: the vault holds pointers, the
odd/documents live in the repository.
Earlier versions used plans, approvals and several files per project. See section 7 of docs/protocol.md and run scripts/mdn-migrate.sh (dry run first, --apply after reviewing).
| Document | Contents |
|---|---|
| concepts.md | What Meridian is, how it relates to ODD and Engram |
| workflow.md | A task from request to done |
| skills.md | One section per command |
| configuration.md | Config file, vault layout, installed files |
| protocol.md | File format and state machine specification |
bash tests/run.sh