Skip to content

Operations overview

The same release supports supervised or operator-run PostgreSQL. Database location does not change product behavior.

flowchart LR
    I[Install] --> C[Configure]
    C --> B[Bootstrap the first identity]
    B --> R[Run]
    R --> M[Monitor readiness and cost]
    M --> U[Upgrade]
    U --> M
    R --> BK[Back up database + blobs together]
    BK --> DR[Restore drill]
Task Page
Install Release · Docker · Source
Configure Configuration reference
Upgrade Upgrades
Watch it Health and cost · Observability
Protect it Backup and restore
Move it Export and import

Daily operational surface

# Liveness — no database, no queue. Point orchestrator liveness probes here.
curl -fsS http://127.0.0.1:4000/api/health

# Readiness — database, Oban, queue depths, model roles. 200 or 503.
curl -fsS http://127.0.0.1:4000/api/ready

# Usage and estimated cost. Requires an account-admin credential.
curl -fsS http://127.0.0.1:4000/api/v1/operations/costs \
  -H "authorization: Bearer $ADMIN_TOKEN"

Do not wire liveness to the readiness checks

A database blip would then kill containers instead of draining them.

Operational rules

1. Back up the database and the blob store at the same recovery point. The database stores content hashes and blob references, not the bytes. Restoring only one side leaves durable document versions without their original content.

2. Keep the embedding identity pinned. Provider, model, version, and dimensions together define the vector space. Change any of them and vectors must be regenerated through the explicit re-embed path — they are never silently reused.

3. Never run an old release against a newly migrated database. Migrations are forward operations. Rollback means restoring the pre-upgrade database and blob snapshot together, then starting the prior release.

What is safe to lose

Must survive May be rebuilt
Raw messages Context projections
Governed knowledge Entity rows and mentions
Document versions and original blobs Document chunks
Hash-chain audit log Vector and full-text indexes
Usage ledger HNSW state, ETS counters

Content safety

Readiness may expose component status, queue counts, model identities, versions, and error classes. It must not expose credentials or stored content.

Production structured logs retain only a reviewed metadata allowlist. Exact API and model usage lives in the usage ledger; the ETS budget counters in front of it are rebuildable.

Cost control

Daily token limits are admission control, and dream-time is throttled first — background reasoning yields before user-facing ingest and retrieval do.

Cost estimates use operator-provided rates and the local usage ledger.

Release and versioning

MemHouse uses Semantic Versioning; mix.exs is authoritative and a release tag is exactly v<version>. The release checklist, the versioning policy, and the required CI checks are maintainer process and live in the repository under specs/process/.