Autonomous Business OS
Goal (Nabil, 2026-07-06): every venture runs as a well-oiled machine with minimal input — emails ingested and answered, investors updated, renters reached when incidents happen, marketing shipping weekly, each project self-maintaining. Human involvement collapses to approvals and exceptions.
Operating principle: agents draft, Nabil approves, agents execute and record. Every loop below terminates in #approvals before touching the outside world. The vault is the record; Slack is the console; the Coolify vault-agent is the always-on engine (co-located with Gitea, Bizzle, Listmonk, Novu, Umami, DocuSeal on the same network).
The six loops
1. Email loop (ingest → triage → draft → approve → send)
The unlock for investors and renters — one mechanism, many uses.
- Ingest: Hostinger mailboxes speak IMAP/SMTP. The vault-agent polls IMAP directly (himalaya CLI or a small script) every 15–30 min — no dependency on reviving Bizzle first. Bizzle (
bph8sl0brplzqwhtsvhlfo2g, status unknown) can later take over ingest as the dedicated email service; the triage stays the same. - Triage: classify each new email → investor / renter / vendor / lead / noise. Noise archived. Everything else gets a drafted reply.
- Approve: draft posted as an
#approvalsthread (from, subject, proposed reply). Nabil replies "approve"/edits. - Send: SMTP (msmtp) from the right identity (saninabil@ for legal/investor, hellofleet@ for renters). Thread updated; durable facts written to the vault.
2. Investor loop (monthly, mostly automatic)
SwiftRide Hasura already has investors, investor_reports, investor_vehicles, investor_user_access tables — the schema was built for this.
- Monthly job: per investor, pull their vehicles' revenue/costs → generate the investor report → draft the update email →
#approvals→ send. Incident-triggered variant: if an investor's vehicle is damaged, a proactive note is drafted same-day.
3. Incident → renter loop (event-driven)
- Watch: vault-agent polls Hasura daily(+) for
accident_reportsinserts andvehicle_statustransitions (rented→maintenance/damaged), plus#tech-alertsfor platform incidents. - Act: for each affected vehicle, identify the renter (assignments in Hasura), draft outreach (what happened, replacement/repair plan, next step) →
#approvals→ send via email loop. Log to the vehicle note in the vault.
4. Marketing loop (weekly, per active project)
- Create: weekly "marketing pass" drafts one campaign per active venture — copy + Canva asset (Canva MCP is connected) sized per channel.
- Distribute: Listmonk (already running on Coolify) for email campaigns to segmented lists; social copy drafted for manual posting at first. Landing/analytics feedback via Umami + PostHog.
- Approve: the weekly batch lands in
#approvalsas one thread per venture.
5. Per-project machines (replicate the proven pattern)
The lot-logistics weekly self-improvement routine (prod health → bugs → draft PRs → competitive intel → report to channel) is proven. Roadside already runs 4 daily/weekly agents. Clone the pattern to: tripsynk, dealer-connect, attaqwa-lms, and Stitch&Wear/BillBash once their status is confirmed. Each posts to its business channel. Repos on GitHub → Anthropic cloud routines (proven rails); vault/fleet/data work → vault-agent.
6. CEO loop (the only mandatory human touchpoint)
- Daily: Morning Briefing (exists) — attention items across everything.
- Weekly (Sun): "CEO review" digest — what every loop did, what's awaiting approval, per-venture KPIs (fleet P&L, PostHog traffic, pipeline), what's stuck. 15 minutes of approvals instead of a week of ops.
Division of engines
| Engine | Owns | Why |
|---|---|---|
| vault-agent (Coolify) | vault, fleet P&L, email loop, incident watch, investor reports, marketing drafts | on-network with Gitea/Hasura/Listmonk/mailboxes; always-on |
| Anthropic cloud routines | per-repo self-improvement, Morning Briefing, reminders | proven; GitHub + web access |
| OpenClaw/Nas (kept) | interactive Slack chat | Nabil's standing agent |
| Local Claude (this) | build/change the machine, deep work, launchd backup | full MCP access |
Build order (each step ships value alone)
- Finish vault-agent deploy (blocked on Gitea SSH exposure decision) — the engine for everything below.
- Email loop v1 — IMAP poll + triage + approve-to-send. Unlocks investor + renter comms immediately.
- Incident watcher — Hasura accident/status poll → drafted renter outreach.
- Investor monthly reports — off the existing Hasura investor tables.
- Marketing pass v1 — Listmonk + Canva weekly batch for LotLogistics + Roadside first.
- Clone self-improvement routines — tripsynk, dealer-connect, attaqwa.
- CEO weekly digest — once loops 1–5 emit, aggregate them.
Guardrails
- No outbound message (email/SMS/campaign) without
#approvalssign-off — standing rule, revisit per-loop only after 4+ clean weeks. - Money stays read-only everywhere (restricted Stripe key, read-only Hasura role when minted).
- Every loop writes what it did to the vault (
System/Runs/+ the relevant note) — auditable, resumable. - One loop added at a time; a loop earns autonomy upgrades by track record, not by design.