diff --git a/.gitignore b/.gitignore index 81f2e23..755ca56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,12 @@ +*.env +*.secret +*.pem +*.key +*.sqlite __pycache__/ *.pyc -.env -*.log .DS_Store -Thumbs.db -node_modules/ +.auth +secrets/ +credentials/ +*_creds* diff --git a/README.md b/README.md index b7fa14a..2f36e95 100644 --- a/README.md +++ b/README.md @@ -1,121 +1,23 @@ -# 🛰️ Atlas OS +# Atlas OS -> Open-source patterns + tools for solo founders running a multi-node local LLM cluster + an own AI-first workspace. +Browser-native desktop environment for Atlas Corporation — a full PWA served behind Authentik SSO. -Built by [Atlas Corporation](https://atlascorporation.nl) — extracted from a working production stack. MIT licensed. +## Screens -## What's inside +| Screen | Data | +|--------|------| +| Today | Daily brief, AI state | +| Money | Bank transactions | +| Inbox | Email + WhatsApp drafts | +| Pipeline | CRM leads | +| Fleet | POS terminals | +| Control | Kill-switch, spend cap | -### Browser-native LLM surfaces (no build step, no React) +## Deployment -| File | What | Lines | -|---|---|---| -| `web/atlas-chat.html` | Mobile-first chat UI for Ollama clusters + optional Claude API. Streaming, localStorage history, multi-model picker, Vault RAG toggle | ~520 | -| `web/atlas-hud.html` | Iron Man-style ambient HUD: camera feed + face detection (face-api.js) + circular audio waveform + Web Speech API ASR/TTS | ~600 | -| `web/atlas-command.html` | Unified cockpit: 6 tabs (Chat / Brief / Buy? / Autonomy / HUD / Portal). Live cluster + finance + strategy + R10 cards | ~800 | +Served at `https://command.atlascorporation.nl/os/` behind Authentik forward_auth. +Cockpit APIs proxied server-side — no credentials in the browser. -Drop in any web server. Single-file each. No npm install. +## Tech stack -### Python automation - -| Script | Purpose | -|---|---| -| `scripts/cluster.py` | Multi-node Ollama orchestrator (task → node → model routing, fallback chain) | -| `scripts/cluster_then_polish.py` | Two-pass LLM pattern: cluster generates draft → flagged `polish_status: pending` | -| `scripts/atlas_self_prompting_loop.py` | Self-perpetuating autonomy: 8 topic templates × N nodes | -| `scripts/atlas_tray.py` | pystray system tray icon — color-coded cluster health (polls every 30s) | -| `scripts/atlas_seasonal_strategy.py` | NL fiscal calendar awareness (vakantiegeld, BTW deadlines, schoolvakantie, Sint/Kerst) | -| `scripts/atlas_finance_export.py` | NL freelancer Inkomsten xlsx parser (Betaalcontrole sheet pattern) → JSON | -| `scripts/atlas_reminders.py` | Burden-remover daily schtask: monthly Inkomsten + quarterly BTW + savings + IB prep | -| `scripts/atlas_activity_export.py` | ActivityWatch → R10 hours ratio (sales vs infra) for daily/weekly discipline | -| `scripts/atlas_autonomy_export.py` | Expose autonomy loop state via JSON for live dashboards | -| `scripts/vault_rag_expand.py` | Batch upload Markdown to Open WebUI Knowledge Base via API | -| `scripts/atlas_lead_enrich.py` | Per-prospect personalized cold-WhatsApp generator (NL sectors) | - -### Patterns documented - -- `patterns/CLUSTER_THEN_POLISH.md` — Local 7B-8B for volume, Claude for signal -- `patterns/ANTI_IMPULSE_RULES.md` — R1-R10 cash-before-code rules - -## Why this exists - -After 12 months of solo founder building, the patterns that actually survived. Specifically for the founder who: -- Runs Ollama or similar local LLM (on PC + VPS + secondary desktop) -- Wants Atlas-style live dashboard, not enterprise BI -- Uses Obsidian as second brain -- Needs Dutch fiscal calendar awareness -- Hates WordPress + Elementor for AI-edit-friendly new builds -- Wants "cash before code" enforced by automation, not willpower - -## Install - -```bash -git clone https://git.atlascorporation.nl/chaib/atlas-os.git -cd atlas-os -``` - -### Web surfaces -Serve any `web/*.html` via Caddy / nginx / Cloudflare Pages. Each is self-contained (CDN-loaded marked.js + DOMPurify). - -### Python tools -```bash -cd scripts -pip install -r requirements.txt # pystray, pillow, openpyxl -# Run individual scripts; each documents its env vars -``` - -## Configuration - -Each tool has `` placeholders. Replace with your: -- VPS IP (Hetzner / DigitalOcean / wherever Ollama runs always-on) -- Desktop node IP (your secondary GPU machine) -- PC node IP (your daily-driver localhost or tailnet IP) -- Open WebUI JWT (for Vault RAG queries) -- Knowledge Base ID -- SMTP credentials (for reminder emails) -- Domain - -See individual file headers. - -## Architecture (the actual production setup) - -``` -Operator PC (Windows) - - Ollama (GPU) — ~10 models - - Atlas Command HTML served via Caddy on VPS - - Atlas Tray Python (taskbar — always visible) - - atlas_self_prompting_loop schtask (every 15 min, 12h windows) - | - v Tailscale mesh (encrypted overlay) - | -VPS (Hetzner CPX32 — always-on) - - Ollama (CPU) — 5 small/medium models - - Caddy reverse proxy - - Open WebUI (Vault RAG, multi-tenant chats) - - Odoo / Nextcloud / Vaultwarden / MeshCentral / Forgejo (this repo!) - | - v -Secondary desktop (GPU node) - - Ollama — Llama 3.1 8B + smaller -``` - -Total monthly hosting cost: ~€25 (VPS) + electricity for PC + desktop. No SaaS subscriptions. - -## License - -MIT. Use freely. Attribution appreciated but not required. - -## Roadmap (PRs welcome) - -- Astro + Decap CMS template for AI-edit-friendly websites -- OpenWakeWord OS-level voice trigger (replaces browser-tab requirement) -- Multi-tenant pattern for solo agencies running N client sites -- Local sentence-transformer embeddings (replace Open WebUI dependency) -- Cluster-of-experts pattern for narrative tasks (rotate prompt across nodes, vote on best) - -## Credits - -Built by [@chaib](https://atlascorporation.nl) · Tilburg, NL · 2025-2026. -Patterns surfaced through 8 months of daily live use + ruthless removal of what didn't earn its keep. - -> One person, one stack, one workspace. Atlas because it carries the load. +Vanilla JS PWA · Authentik SSO · Evolution API (WhatsApp) · Caddy · Docker · Hetzner diff --git a/web/os.html b/web/os.html new file mode 100644 index 0000000..b662257 --- /dev/null +++ b/web/os.html @@ -0,0 +1,230 @@ + + + + + + +Atlas OS + + + + +
+ +
ATLAS OS
+
+
initializing kernel…
+
+ +
+
—
+
—
+
··
+
…
+
Atlas Corporation · connecting to Authentik SSO…
+ +
+ +
+
+ + + + + + +
+ +
+
Atlas OS 1.0 · your business on one box · live behind your identity login
+
+ + + + diff --git a/web/sitemap.html b/web/sitemap.html new file mode 100644 index 0000000..1f198a7 --- /dev/null +++ b/web/sitemap.html @@ -0,0 +1,49 @@ + + +Atlas — Architecture Map + + + +

Atlas — Architecture Map

+
One server (atlas-01, Hetzner) · 24 public services · generated 2026-06-22 · green = verified up, amber = needs attention
+
+
+Where your logins live: all credentials belong in your vault — vault.atlascorporation.nl (Vaultwarden). On iOS: install the Bitwarden app, set the server URL to vault.atlascorporation.nl, sign in. Identity for the OS and services = Authentik SSO.

+Known issue: email ingestion (IMAP credentials need refreshing — update /etc/atlas/assistant.env to restore inbox + calendar auto-detect. +
+