a8ec7b80de
---ci--- project: inboxos phase: 1 milestone: v1.4 status: execute wave: 2 tasks: [T3, T4, T5, T6, T7, T8] ---/ci---
3.3 KiB
3.3 KiB
InboxOS — Operator Tutorial (30-minute walkthrough)
A guided tour for the new operator. Read top-to-bottom; each chapter takes ~5-10 minutes.
Chapter 1: Setup (5 min)
Goal: get a working InboxOS instance on your laptop.
- Clone the repo:
git clone https://git.cloudinit.dev/jc-capital/inboxos.git && cd inboxos - Run
scripts/quickstart.sh(REQ-INB-40). The script pulls Docker images, generates.env, brings up the stack, and runs a 1-message smoke test. - Login to NocoDB at http://localhost:8080.
- See the 4 module tables in the left-nav:
finance,crm,intel,promotions.
Next: see docs/operations-runbook.md §3.1 (Live pipeline) for the production setup.
Chapter 2: First run (5 min)
Goal: process a real .mbox file end-to-end.
- Get a sample .mbox (or use
tests/fixtures/single.mboxfrom the repo). - Run
python pipelines/historical_pipeline.py --mbox /path/to/file.mbox. - Watch the JSONL events stream to stderr.
- In NocoDB, look for the row in the appropriate module table.
- Check the 4 curated views (REQ-INB-41) in the left-nav.
Next: see docs/extraction-contract.md for the prompt contract.
Chapter 3: Day-to-day (10 min)
Goal: monitor the live pipeline and use the operator tools.
- The live pipeline runs on
cron */5 * * * *via.gitea/workflows/live-pipeline.yml. Check Gitea Actions for the last run. - Run
scripts/dashboard.py(REQ-INB-50) for an at-a-glance terminal view. - To find a specific email, use
scripts/find_email.py --mid <Message-ID>(REQ-INB-43) or--sender. - To inspect a recent run in detail, use
scripts/explain_run.py(REQ-INB-42) orscripts/explain_run.py --json | jq. - To see monthly costs, run
scripts/cost_report.py --month 2026-06(REQ-INB-54).
Next: see docs/operations-runbook.md §4 (Observability).
Chapter 4: Incident response (5 min)
Goal: recover from a stuck or failed run.
- If something is broken, start at the ERROR-NN catalog (REQ-INB-46) at
docs/operations-runbook.md §5. - The 10 ERROR-NN codes map 1:1 to the §5.X subsections.
- To replay failed/skipped MIDs, use
scripts/replay.py --status errored --confirm(REQ-INB-45). - To reclassify a MID into a different module, use
scripts/reclassify.py --mid <MID> --new-module crm --confirm(REQ-INB-44). - If the smoke test fails on a fresh install, the runbook §5 has the recovery procedure per failure mode.
Next: see docs/operations-runbook.md §5.7 (Backup and restore).
Chapter 5: Hardening (5 min)
Goal: understand the v1.4 product-grade security posture.
- Container hardening (REQ-INB-55): all 6 services run with
read_only: true(ortmpfs: [/tmp]for write-required services),cap_drop: [ALL], andsecurity_opt: no-new-privileges. Seedocker/docker-compose.yml. - PII-scrub (REQ-INB-57): SSN, credit-card, IBAN, and phone numbers are masked before the email body is sent to Ollama. The audit trail is in
_artifacts/pii_scrub.jsonl. - Secret redaction (REQ-INB-56): all 9 secret env vars are auto-masked in CI logs via
::add-mask::. - DPIA (REQ-INB-58): see
docs/security/dpia.mdfor the GDPR Art. 35 data protection impact assessment. - Threat model (REQ-INB-59): see
docs/security/threat-model.mdfor the STRIDE-per-component decomposition.
Next: see docs/security/dpia.md and docs/security/threat-model.md.