Aletheia

7. Operations

Requirements

Run

bun bin/aletheia-server.mjs

It prints the port, the database path, the data directory and whether the refresh is on. Stop with Ctrl-C (SIGINT/SIGTERM close the database handles).

Run as a user service (systemd)

scripts/aletheia.service:

[Unit]
Description=aletheia-mem
After=default.target

[Service]
WorkingDirectory=%h/Projects/aletheia-mem
ExecStart=%h/.bun/bin/bun bin/aletheia-server.mjs
Environment=ALETHEIA_PORT=37790
# Environment=ALETHEIA_PROVIDER=claude-cli
Restart=on-failure

[Install]
WantedBy=default.target
mkdir -p ~/.config/systemd/user
cp scripts/aletheia.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now aletheia
journalctl --user -u aletheia -f

Sharing the original's ledger

By default the clone keeps its own ledger. To read what the original's refresh already produced, set ALETHEIA_LEDGER_DIR=~/.claude-mem/work-view. Both servers then read the same files. Do not enable the clone's refresh on that directory while the original's refresh is also on: two writers, one ledger. (A refresh in one process refuses to start while another live pid holds state: running, but the check is a courtesy, not a lock.)

Security model

Files and growth

PathGrows withSafe to delete?
<data>/overlay.dbeach rule or "finished" actionno: your saved rules live here
<data>/work-view-reviews.dbeach checked cardyes (marks are lost)
<ledger>/refreshesyes; the next refresh rebuilds it (costs model calls)
<data>/human-copy.json, human-copy-usage.jsonlmodel callsyes
<ledger>/failed-answers/refused model answersyes

Troubleshooting

SymptomCause and fix
Page says the work-state database is unavailableCLAUDE_MEM_DB wrong or claude-mem not installed. ls ~/.claude-mem/claude-mem.db.
403 "available only on this computer"You used a non-loopback host name, a proxy, or 0.0.0.0. Use http://localhost:<port>.
403 on a POSTBrowser sent another Origin (a different port or host) or a non-JSON content type.
No agents shown, 0 observationsRunning with ALETHEIA_BUG_COMPAT=1, or your database has no observations rows.
Cards but no progress metersThe refresh has not run. Set a provider, then check <ledger>/refresh.json.
refresh.json says failedRead error and steps; look in <ledger>/failed-answers/. A provider error shows the CLI's first line.
waiting-for-agent(original only) no logged-in agent CLI; the clone reports failed with the provider error instead.
Rule saved but Claude Code does not follow itClick Load in Claude Code, or add @<rules path> to your CLAUDE.md yourself.
Port in useALETHEIA_PORT=<n>.