Private relay infrastructure powering LenGrowth.
LenOS is the Nostr-protocol relay, agent harness, and client layer that backs every LenGrowth workspace. It provides the event store, agent runtime, real-time messaging, and client apps (web, desktop, mobile) that LenGrowth's growth agents operate within.
User signs up on LenGrowth
│
▼
LenGrowth web (Scalingo: lengrowth-web, Next.js)
│ POST /api/auth/managed-nostr/provision
│ → per-user encrypted Nostr identity
▼
LenGrowth backend (Scalingo: lengrowth-main, FastAPI)
│ POST /operator/communities (NIP-98)
│ → provisions relay community per workspace slug
▼
LenOS Relay (AWS ECS/Fargate, Rust/Axum)
│ wss://relay.lengrowth.com
│
├── Postgres (RDS) ← events, channels, workflows, audit, agent_credentials
├── Redis (ElastiCache) ← pub/sub fan-out, presence, typing indicators
└── S3 ← media (Blossom) + huddle recordings
LenOS web app (Cloudflare Pages: *.lengrowth.com)
Each LenGrowth workspace gets:
- A Nostr keypair for the growth agent (via
managed_nostrroute) - A relay community scoped to that workspace
- A
lenos-acpsubprocess connecting towss://relay.lengrowth.comusinglenos-agent(AWS Bedrock) as the LLM backend
Agent subscribes per crates/lenos-acp/agents/lengrowth.toml: fires on @lengrowth mentions and in the dedicated HQ channel. LenGrowth's FastMCP server at /mcp is the agent's tool surface via LENGROWTH_MCP_URL.
- Web (React SPA) — served at
*.lengrowth.comvia Cloudflare Pages - Desktop (Tauri + React) — macOS, Linux, Windows; local-first, best for development
- Mobile (Flutter, iOS + Android) — channels, agents, DMs, pulse
You'll need Docker, Rust 1.88+, Node 24+, pnpm 10+, just.
git clone <this repo> && cd LenOS
# First time
just setup && just build
# Every day
just dev # relay + web dev server + desktop appRelay: ws://localhost:3000. Web: http://localhost:5173.
just relay # relay only (terminal 1)
just web-dev # web dev server only (terminal 2)| Doc | Purpose |
|---|---|
| AGENTS.md | Codebase guide for AI agents and internal devs — repo structure, patterns, gotchas |
| ARCHITECTURE.md | System design: event pipeline, crate map, security model, subsystem reference |
| docs/STATUS.md | Single source of truth: what works, confirmed gaps, production verification state |
| docs/DEPLOYMENT.md | Deploying the relay (Railway, Docker Compose, production Compose bundle) |
| docs/lengrowth-integration-runbook.md | LenGrowth ↔ LenOS integration runbook |
| RELEASING.md | Release process: desktop, relay, mobile, web |
| TESTING.md | Multi-agent E2E test guide |
| SECURITY.md | Security policy and reporting |
| docs/AGENT-GUIDE.md | What agents can do — web vs desktop, 20 task examples |
| docs/ONBOARDING.md | User-facing setup guide for web, desktop, mobile |
| docs/ON-CALL.md | Ownership, incident response, escalation, privacy |
| docs/OPS-CHECKLIST.md | Human-action pre-launch ops items with exact commands |
just setup # Docker, migrations, desktop deps
just relay # Run the relay
just dev # Run the desktop app + relay
just build # Build the Rust workspace
just check # fmt + clippy + desktop check
just test-unit # Unit tests (no infra required)
just test # Full suite (starts services if needed)
just ci # Everything CI runs
just reset # ⚠️ Wipe data + recreate