diff --git a/README.md b/README.md index bcbcead..aaedc3a 100644 --- a/README.md +++ b/README.md @@ -1,142 +1,258 @@
-Atlas OS +![Atlas OS](./assets/header.svg) -**A sovereign, browser-native AI operating system.** -Log in with your identity → your entire operation as apps on one desktop. No install. Any device. One login. +# Atlas OS -[![status](https://img.shields.io/badge/status-live-1F6FE0?style=for-the-badge&labelColor=050810)](https://command.atlascorporation.nl/os/) -[![apps](https://img.shields.io/badge/apps-39-4EA0FF?style=for-the-badge&labelColor=050810)](#-the-app-catalog) -[![sovereignty](https://img.shields.io/badge/hosting-EU--sovereign-145ED2?style=for-the-badge&labelColor=050810)](./docs/security.md) -[![identity](https://img.shields.io/badge/SSO-Authentik-4EA0FF?style=for-the-badge&labelColor=050810)](https://auth.atlascorporation.nl) -[![license](https://img.shields.io/badge/license-MIT-8EC2FF?style=for-the-badge&labelColor=050810)](./LICENSE) +[![Status](https://img.shields.io/badge/status-live-4ec98a?style=flat-square&logo=checkmarx&logoColor=white)](https://command.atlascorporation.nl/os/) +[![Containers](https://img.shields.io/badge/containers-55-4a9fe2?style=flat-square&logo=docker&logoColor=white)](./SERVICES.md) +[![Apps](https://img.shields.io/badge/apps-39-4a9fe2?style=flat-square&logo=windowsterminal&logoColor=white)](./SERVICES.md) +[![Stack](https://img.shields.io/badge/stack-Caddy_·_Authentik_·_Docker-1c4fae?style=flat-square&logo=cloudflare&logoColor=white)](./ARCHITECTURE.md) +[![AI](https://img.shields.io/badge/AI-LiteLLM_·_Ollama_·_Claude-9b8cf0?style=flat-square&logo=openai&logoColor=white)](./docs/ai-stack.md) +[![Wiki](https://img.shields.io/badge/docs-wiki-4a9fe2?style=flat-square&logo=readthedocs&logoColor=white)](https://git.atlascorporation.nl/chaib/atlas-os/wiki) + +**Your entire business running on one hardened Linux server.** +**One SSO identity. One browser login. One OS.** + +[🚀 Live Desktop](https://command.atlascorporation.nl/os/) · [📐 Architecture](./ARCHITECTURE.md) · [📦 Services](./SERVICES.md) · [🛠 Deploy](./deploy/) · [🤖 AI Stack](./docs/ai-stack.md) · [📖 Wiki](https://git.atlascorporation.nl/chaib/atlas-os/wiki)
--- -## What it is +## What is Atlas OS? -Atlas OS is what happens when one operator builds an entire private cloud and then puts **one front door** on it. Log in once with [Authentik](https://goauthentik.io) SSO and a desktop boots in your browser — your bank feed, CRM, mail, files, documents, fleet of POS terminals, automation engine and a real Linux remote desktop, all as apps on a single screen. +Atlas OS is a self-hosted business operating system running on a single Hetzner VPS. One [Authentik](https://goauthentik.io) SSO identity unlocks **39 services** spanning CRM, finance, communications, AI, fleet management, document storage, and a full Linux remote desktop — all served behind [Caddy](https://caddyserver.com) with automatic HTTPS. -Not a SaaS. Not a dashboard mockup. A **reviewed execution layer** above the tools you already run — sovereign by design, hostable in our EU cloud **or fully on-premise on your own server**, in the spirit of Citrix / ServiceNow but built for the solo founder and the small team. +It's the operational spine of **Atlas Corporation** (Tilburg, NL) — built by and for a solo founder who needed a private cloud they actually own, styled like a space-grade command console. + +> Think of it as a Citrix-style desktop, but it's your own server, your own identity, your own data.
-Atlas Workspace — every department, one screen -
Every department, one screen — apps on a sovereign desktop. + +![Atlas OS desktop](./assets/desktop-preview.svg) + +The Atlas OS desktop — categorized launcher, live cockpit panels, drag-and-drop windows. Served at command.atlascorporation.nl/os/ behind SSO. +
---- - -## ✦ The experience - -| | | -|---|---| -| | | -| **One partner for every system** — ERP, POS, webshop, hardware, AI as one seamless whole. | **The Atlas platform** — surfaces → workspace → data sources, one reviewed control layer. | +**What runs on it:** +- 🏢 Odoo 19 ERP/CRM — full business operations +- 💶 Firefly III + Enable Banking — bank sync and financial intelligence +- 📧 Stalwart — self-hosted mail (all domains) +- 🤖 Atlas Brain — AI that reads your mail, CRM, and bank every 15 minutes +- 🎓 Atlas Academy — courses + lead capture wired to Odoo CRM +- 🕌 Islamic layer — Adhan at salah times, Quran at logon, family-safe DNS +- 🖥️ Remote Linux desktop — Webtop (XFCE + Claude Code + Chromium inside) +- 🔒 Authentik — SSO that gates every single service +- ...and more --- -## 🗺️ Architecture +## 🖥️ The Desktop -One box. One identity. Everything behind it. +Open `https://command.atlascorporation.nl/os/` on any device. You get a space-themed boot screen → Authentik SSO login → a live desktop with your real data: a categorized launcher (Cockpit · Identity · AI · Work · Files · Ops · Sites), drag-and-drop windows, a taskbar, and cockpit panels that auto-refresh. + +**Remote Linux desktop** (tailnet-only): +``` +http://atlas-01.tailab40ed.ts.net:8497 +``` +A real XFCE desktop in the browser. Claude Code and Chromium are pre-installed — OAuth login works because the browser is *inside* the desktop. Requires Tailscale to be active on your device. + +--- + +## 🏗️ Architecture + +
+ +![Atlas OS architecture](./assets/architecture.svg) + +
+ +One box. Caddy is the **sole** public entry point. Every public service passes through Authentik `forward_auth` before it's reached. Root-level access (SSH, the Webtop desktop) is Tailscale-only and never exposed to the public internet. + +
+Interactive Mermaid diagram ```mermaid -%%{init: {'theme':'base','themeVariables':{'primaryColor':'#0c1428','primaryTextColor':'#cfe2ff','primaryBorderColor':'#1F6FE0','lineColor':'#4EA0FF','fontFamily':'monospace'}}}%% -graph TB - User([Any device]):::u --> Caddy[Caddy · TLS + edge]:::edge - Caddy --> Auth{{Authentik SSO}}:::id - Auth --> OS[Atlas OS desktop]:::os - Auth --> Apps[39 apps]:::os - OS --> Mind[The Mind · cockpit + spine]:::ai - Mind --> Brain[Atlas Brain · reviewed execution]:::ai - Brain --> Router[LLM router · local → Groq → Claude]:::ai - Apps --> Stack[Odoo · Nextcloud · Firefly · Paperless · n8n · Forgejo · Vault · Stalwart]:::svc - Caddy --> Fleet[Fleet · MeshCentral + Tailscale + NATS mesh]:::fleet - Caddy --> Sites[Client sites · WordPress · POS · Academy]:::site - - classDef u fill:#050810,stroke:#4EA0FF,color:#8EC2FF - classDef edge fill:#0c1428,stroke:#1F6FE0,color:#cfe2ff - classDef id fill:#145ED2,stroke:#4EA0FF,color:#fff - classDef os fill:#0c1428,stroke:#4EA0FF,color:#cfe2ff - classDef ai fill:#0c1428,stroke:#8EC2FF,color:#cfe2ff - classDef svc fill:#080c18,stroke:#1F6FE0,color:#9fb8e0 - classDef fleet fill:#080c18,stroke:#1F6FE0,color:#9fb8e0 - classDef site fill:#080c18,stroke:#145ED2,color:#9fb8e0 +graph LR + subgraph Internet + U([User Browser]) + iOS([iOS / Mobile]) + end + subgraph atlas-01["atlas-01 · Hetzner CPX32"] + direction TB + C[Caddy TLS] + A[Authentik SSO] + C -->|forward_auth| A + A -->|verified| OS[Atlas OS Desktop] + A -->|verified| OD[Odoo ERP] + A -->|verified| NC[Nextcloud] + A -->|verified| AI[AI Gateway LiteLLM] + A -->|verified| FG[Forgejo Git] + A -->|verified| MC[MeshCentral] + subgraph AIStack["AI Stack"] + AI --> OL[Ollama Local] + AI --> GR[Groq / Cerebras] + AI --> CL[Claude API] + AB[Atlas Brain] -->|15min| AI + AB --> ST[atlas-state.json] + ST --> OS + end + subgraph MeshNet["Mesh"] + NATS[NATS Event Bus] --> TS[Tailscale Devices] + end + end + U -->|HTTPS| C + iOS -->|Tailscale| TS ``` +
-Full write-up → **[ARCHITECTURE.md](./ARCHITECTURE.md)** · every container & service → **[SERVICES.md](./SERVICES.md)** · the AI layer → **[docs/ai-stack.md](./docs/ai-stack.md)** +Full detail in [ARCHITECTURE.md](./ARCHITECTURE.md). --- -## 🧩 The app catalog +## 📦 Service Catalog -39 apps, live-verified (no dead tiles), grouped into a categorized launcher: +### 🎯 Cockpit (live data panels) +| App | Description | +|-----|-------------| +| Today | AI daily brief + accountability level | +| Money | Bank transactions via Enable Banking PSD2 | +| Inbox | Email + WhatsApp drafts, flagged items | +| Pipeline | Odoo CRM leads and deal status | +| Fleet | POS terminals, health, last-seen (MeshCentral) | +| Control | AI kill-switch, autonomy level, daily spend cap | -| Group | Apps | -|---|---| -| **Cockpit** | Today · Money · Inbox · Pipeline · Fleet · Control | -| **Identity** | Authentik SSO · Vaultwarden | -| **AI** | Atlas Chat (Open WebUI) · AI Gateway · Mindmap · Leeragent | -| **Work** | Odoo 19 · CFO · Bank (Firefly) · Paperless · Office · Calendar | -| **Files & Comms** | Nextcloud · Mail Admin (Stalwart) · Relay | -| **Ops** | Git (Forgejo) · n8n · Uptime Kuma · MeshCentral · Command · **Remote Desktop** · Architecture | -| **Sites** | AtlasWorks · Atlas Corp · Agency · **Academy** · AtlasPOS · Hub + client sites | +### 🛡️ Identity +| App | Description | URL | +|-----|-------------|-----| +| Authentik | SSO, OIDC, MFA — gates all services | [auth.atlascorporation.nl](https://auth.atlascorporation.nl) | +| Vaultwarden | Self-hosted Bitwarden (iOS app works) | [vault.atlascorporation.nl](https://vault.atlascorporation.nl) | -> **Remote Desktop** is a genuine Ubuntu XFCE desktop in the browser (Webtop) with Claude Code + Chromium pre-installed — boot Claude or any app, on a sovereign desktop. → [docs/remote-desktop.md](./docs/remote-desktop.md) +### 🤖 AI +| App | Description | URL | +|-----|-------------|-----| +| Atlas Chat | Open-WebUI — ChatGPT-style on local + cloud models | [chat.atlascorporation.nl](https://chat.atlascorporation.nl) | +| AI Gateway | LiteLLM proxy — unified OpenAI-compat API | [llm.atlascorporation.nl](https://llm.atlascorporation.nl) | +| Mindmap | AI-powered visual thinking | [mindmap.atlascorporation.nl](https://mindmap.atlascorporation.nl) | +| Leeragent | Learning & knowledge agent | [leeragent.atlascorporation.nl](https://leeragent.atlascorporation.nl) | + +See the full AI routing stack (local → free cloud → paid) in [docs/ai-stack.md](./docs/ai-stack.md). + +### 💼 Work +| App | Description | URL | +|-----|-------------|-----| +| Odoo | ERP + CRM (leads, invoices, customers) | [odoo.atlascorporation.nl](https://odoo.atlascorporation.nl) | +| CFO / Firefly III | Double-entry bookkeeping + budget intelligence | [cfo.atlascorporation.nl](https://cfo.atlascorporation.nl) | +| Bank / Enable Banking | PSD2 bank sync (ING, Knab, etc.) | [fidi.atlascorporation.nl](https://fidi.atlascorporation.nl) | +| Paperless-ngx | Document management + OCR | [paperless.atlascorporation.nl](https://paperless.atlascorporation.nl) | +| OnlyOffice | Full office suite (Writer, Sheets, Slides) | [office.atlascorporation.nl](https://office.atlascorporation.nl) | +| Calendar | Nextcloud Calendar (DAV sync to iOS) | [cloud.atlascorporation.nl](https://cloud.atlascorporation.nl) | + +### 📁 Files & Comms +| App | Description | URL | +|-----|-------------|-----| +| Nextcloud | File storage, DAV, photos | [cloud.atlascorporation.nl](https://cloud.atlascorporation.nl) | +| Stalwart Mail | Self-hosted email (SMTP/IMAP/JMAP) | [stalwart.atlascorporation.nl](https://stalwart.atlascorporation.nl) | +| Relay | Internal message relay service | [relay.atlascorporation.nl](https://relay.atlascorporation.nl) | + +### ⚙️ Ops +| App | Description | URL | +|-----|-------------|-----| +| Forgejo | Self-hosted Git — this very repo | [git.atlascorporation.nl](https://git.atlascorporation.nl) | +| n8n | Workflow automation | [n8n.atlascorporation.nl](https://n8n.atlascorporation.nl) | +| Uptime Kuma | Service health monitoring | [uptime.atlascorporation.nl](https://uptime.atlascorporation.nl) | +| MeshCentral | Fleet management + remote access | [mesh.atlascorporation.nl](https://mesh.atlascorporation.nl) | +| Command | Atlas command dashboard | [command.atlascorporation.nl](https://command.atlascorporation.nl) | +| Remote Desktop | Webtop full Linux desktop (tailnet-only) | `atlas-01.tailab40ed.ts.net:8497` | + +### 🎓 Atlas Academy +A full education arm running on the same box — courses, coaching, and an ESF/BiSL/AI curriculum at [atlasacademy.nl](https://atlasacademy.nl). Lead capture posts straight into Odoo CRM via the `atlas-academy-relay` service (creates `crm.lead` records), with an email fallback. Product feed is wired to WooCommerce. See [docs/academy.md](./docs/academy.md). + +### 🕌 Islamic Layer +A first-class part of the OS, not an add-on: family-safe DNS (AdGuard Family), Quran at logon, Adhan playback + screen lock at El Feth Tilburg salah times, and recurring sunnah reminders across the device fleet. See [docs/islamic-layer.md](./docs/islamic-layer.md). + +### 🌐 Managed Sites +`atlasworks.nl` · `atlascorporation.nl` · `atlasagency.nl` · `atlasacademy.nl` · `atlaspos.nl` · `atlashub.nl` · `bicosagency.nl` · `budgetenergiecoach.nl` · `hkintercare.nl` · `jouwenergieadvies.nl` · `reclamemans.nl` --- -## 🛰️ Fleet, mesh & sovereignty +## 🤖 AI Stack -- **MeshCentral** — remote management of every client POS terminal and device. -- **Tailscale** — the private spine; internal services (`tailscale serve`) never touch the public internet. -- **NATS mesh** — node-to-node messaging across the Atlas estate (round-trip proven). -- **EU-sovereign** — Hetzner (NL/DE), no US Cloud Act exposure, MFA, nightly backups. → [docs/security.md](./docs/security.md) +Atlas OS has a 4-tier AI routing stack — zero-cost local first, paid cloud only when needed. Full table and routing decision tree in **[docs/ai-stack.md](./docs/ai-stack.md)**. + +| Tier | Example | Use | +|------|---------|-----| +| 0 — Local | `atlas-auto` (Ollama on RTX A2000) | Classification, Dutch copy, code, summaries | +| 1 — Free Cloud | Groq / Cerebras 70B · Gemini (1M ctx) | Fast reasoning, bulk tasks, vision | +| 2 — Paid | Claude Haiku / Sonnet / Opus | Code, multi-step reasoning, architecture | + +**Always-on AI services:** `atlas-brain` (15-min signal cycle), `atlas-loop` (NATS nudges), `atlas-meridian` (autonomous decisions), `atlas-litellm` (unified proxy), Langfuse (full LLM tracing). --- -## 🎓 Atlas Academy +## 🚀 Quick Deploy -[atlasacademy.nl](https://atlasacademy.nl) — the training arm. BiSL, startup, AI and ESF-funded tracks, coaching and a course catalog, with leads relayed straight into Odoo CRM. Part of the same one-identity estate; surfaced as a desktop app. - -## 🕌 Atlas Islamic layer - -A personal-sovereignty layer for the operator: Adhan at El Feth (Tilburg) salah times, Qur'an at logon, AdGuard Family DNS + content filtering, and sunnah reminders — proof that "sovereign" includes values, not just data residency. - ---- - -## 🚀 Deploy your own +> **Requirements:** Debian 12 or Ubuntu 24.04, a domain with DNS pointed at the server, a Tailscale account. ```bash -git clone https://git.atlascorporation.nl/chaib/atlas-os.git +git clone https://git.atlascorporation.nl/chaib/atlas-os cd atlas-os -sudo bash deploy/install.sh # Debian/Ubuntu, Docker + Caddy +chmod +x deploy/install.sh +./deploy/install.sh --domain yourdomain.com --email admin@yourdomain.com ``` -Bring your own domain; point it at the box; Caddy issues certs and Authentik gates everything. Core stack compose lives in [`deploy/compose/atlas-core.yml`](./deploy/compose/atlas-core.yml). Full guide → **[docs/deployment.md](./docs/deployment.md)**. +The installer sets up Docker, Caddy, Tailscale, and the core compose stacks. After install, configure Authentik at `https://auth.yourdomain.com`, then log in to `https://command.yourdomain.com/os/`. Full guide: [deploy/README.md](./deploy/README.md). --- -## 📚 Docs & wiki +## 📁 Repository Structure -| | | -|---|---| -| [ARCHITECTURE.md](./ARCHITECTURE.md) | One-box philosophy, topology, data flows | -| [SERVICES.md](./SERVICES.md) | All 55 containers + systemd services | -| [docs/ai-stack.md](./docs/ai-stack.md) | The Mind, the Brain, the LLM router | -| [docs/remote-desktop.md](./docs/remote-desktop.md) | Webtop desktop + Claude inside | -| [docs/security.md](./docs/security.md) | SSO gate, sovereignty, secrets model | -| [docs/deployment.md](./docs/deployment.md) | Stand up the whole stack | -| **[Wiki ↗](https://git.atlascorporation.nl/chaib/atlas-os/wiki)** | Browsable, page-per-topic | +``` +atlas-os/ +├── assets/ # Animated header, desktop preview, architecture SVGs +├── web/os/index.html # The browser OS desktop (production copy) +├── server/ # Sanitized production Python (atlas_brain, meridian, ...) +│ └── systemd/ # Service unit files +├── scripts/ # Export + automation scripts +├── deploy/ +│ ├── install.sh # One-command installer +│ ├── compose/ # atlas-core.yml (+ ai stack) +│ └── caddy/ # Caddyfile.template (Authentik SSO pattern) +├── docs/ # ai-stack · academy · islamic-layer · security · deployment +├── ARCHITECTURE.md · SERVICES.md · CHANGELOG.md · README.md +``` + +--- + +## 🔒 Security Model + +| Layer | Implementation | +|-------|---------------| +| Identity | Authentik SSO — single source of truth for all services | +| TLS | Caddy automatic HTTPS on every public endpoint | +| Network | Public services behind SSO · internal services on Tailscale only | +| Secrets | Vaultwarden (E2E) · age-encrypted vault for sync · chmod 600 on disk | +| Remote desktop | Webtop is tailnet-only — never exposed to the public internet | +| Backups | `atlas-backup-*` services for Forgejo, Nextcloud, Authentik | + +**Rule:** anything root-level stays tailnet-only. Public services must pass Authentik `forward_auth`. No bare basic-auth on the public internet. Full model in [docs/security.md](./docs/security.md). + +--- + +## 🛠️ Tech Stack + +[Caddy](https://caddyserver.com) · [Authentik](https://goauthentik.io) · Docker Compose · [Tailscale](https://tailscale.com) · [NATS](https://nats.io) · [Odoo 19](https://odoo.com) · [Nextcloud](https://nextcloud.com) · [Firefly III](https://firefly-iii.org) · [Paperless-ngx](https://docs.paperless-ngx.com) · [Stalwart](https://stalw.art) · [Forgejo](https://forgejo.org) · [n8n](https://n8n.io) · [Vaultwarden](https://github.com/dani-garcia/vaultwarden) · [LiteLLM](https://litellm.ai) · [Open-WebUI](https://openwebui.com) · [Langfuse](https://langfuse.com) · [Webtop](https://docs.linuxserver.io/images/docker-webtop/) · [MeshCentral](https://meshcentral.com) · [Uptime Kuma](https://uptime.kuma.pet) · [Ollama](https://ollama.com) ---
-**Built by [Chaib Aarab](https://atlascorporation.nl) — Atlas Corporation, Tilburg NL** -Built incrementally, on the go, while running real client projects. The architecture emerged from constraints, not slides. +Built with obsession by **Chaib Aarab** · Atlas Corporation · Tilburg, NL -MIT licensed · EU-sovereign · one login for all of it +⟡ [atlascorporation.nl](https://atlascorporation.nl) · [atlasworks.nl](https://atlasworks.nl) · [atlasacademy.nl](https://atlasacademy.nl) · [atlaspos.nl](https://atlaspos.nl) ⟡ + +*"Your business on one box — space grade."*
diff --git a/SERVICES.md b/SERVICES.md index ac91ef1..a829de5 100644 --- a/SERVICES.md +++ b/SERVICES.md @@ -91,3 +91,21 @@ jouwenergieadvies.nl, reclamemans.nl | atlas-backup-ak | Authentik daily backup | | atlas-disk-api | Disk status API | | atlas-eb-callback | Enable Banking PSD2 callback | + +## Atlas Academy + +| Service | URL | +|---------|-----| +| Academy site | atlasacademy.nl | +| Lead relay (Odoo) | /academy-lead -> 127.0.0.1:7793 (atlas-academy-relay) | +| Product feed | atlasworks.nl/academy-feed.php | + +## Islamic Layer + +| Component | Purpose | +|-----------|---------| +| AdGuard Family DNS | Family-safe DNS + hosts blocklist | +| HaramBlur | Browser content filtering | +| Quran at logon | Recitation on workstation login | +| Adhan + lock | Adhan + screen lock at El Feth Tilburg salah times | +| Sunnah reminders | Recurring fleet-wide reminders | diff --git a/assets/architecture.svg b/assets/architecture.svg new file mode 100644 index 0000000..fd839b5 --- /dev/null +++ b/assets/architecture.svg @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + Atlas OS — One Box, One Identity + Hetzner CPX32 · 8 vCPU · 16 GB · Nuremberg — the entire stack on a single hardened server + + + CLIENTS + + + 🌐 Browser + any device, HTTPS + + 📱 iOS / Laptop + Tailscale mesh + + + + EDGE · TLS + + Caddy + auto HTTPS + sole public port + + + IDENTITY · SSO + + Authentik + forward_auth + OIDC · MFA + gates everything + + + + + + + + + SERVICES — behind SSO + + + CORE BUSINESS + Odoo 19 · Nextcloud · Stalwart Mail · Forgejo · Vaultwarden + + + FINANCE & OPS + Firefly III · Enable Banking · Paperless · n8n · Uptime Kuma + + + AI & INTELLIGENCE + LiteLLM · Open-WebUI · Langfuse · Atlas Brain (15-min cycle) + local Ollama → Groq/Cerebras (free) → Claude (paid) · NATS event bus + + + FLEET & DESKTOP + MeshCentral · Webtop Linux desktop · POS terminals · heartbeats + + + + ATLAS BRAIN · every 15 min + + 📧 7 mailboxes → 🏢 Odoo CRM → 🏦 bank feed + ↓ atlas-state.json + 🤖 LLM synthesis → daily brief + → Today · Money · Inbox · Pipeline panels + + + 11 MANAGED SITES + + atlasworks.nl · atlascorporation.nl · atlasagency.nl · atlasacademy.nl · atlaspos.nl · atlashub.nl + bicosagency.nl · budgetenergiecoach.nl · hkintercare.nl · jouwenergieadvies.nl · reclamemans.nl — all via Caddy + + + + 🔒 Public services pass Authentik forward_auth · root-level (SSH, remote desktop) is Tailscale-only · secrets chmod 600 · no bare basic-auth on the public internet + diff --git a/assets/desktop-preview.svg b/assets/desktop-preview.svg new file mode 100644 index 0000000..8680288 --- /dev/null +++ b/assets/desktop-preview.svg @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + ⌂ Atlas OS + + SSO verified + 21:47 + + CA + Chaib ∨ + + + COCKPIT + + 💰 + Money + 📬 + Inbox + 📈 + Pipeline + 📊 + Today + 🚀 + Fleet + + Control + + + + IDENTITY + 🛡 + Authentik + 🔒 + Vault + + AI + 💬 + Atlas Chat + 🧠 + AI Gateway + 🗺 + Mindmap + 🎓 + Leeragent + + + + + + + 📊 Today — Daily Brief + + MONDAY 22 JUNE · 21:47 + Good evening, Chaib. + 3 leads need follow-up · 2 invoices due this week + Bank balance synced · all POS terminals online + + REVENUE FOCUS + AtlasPOS + €79/mo · Tilburg horeca + + AUTONOMY + Level 3 — Supervised + spend cap active + SYNTHESIZED BY + atlas-brain · atlas-auto → Groq 70B → Claude + + Open Pipeline + + Refresh + + + + + + 📊 Today + 39 apps · 55 containers · one box + diff --git a/assets/header.svg b/assets/header.svg index 2dd63a5..17111bd 100644 --- a/assets/header.svg +++ b/assets/header.svg @@ -1,71 +1,115 @@ - + - - - - + + + + - - - - + + + - - - - + + + + + + + + + + + + - + + + + + + + + + + + + - + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - + + + - - - - - - - - - - - - - + + + + + + - - - - - - - - - + + + + + + - ATLAS OS - SOVEREIGN AI COMMAND CENTER · ONE LOGIN · ANY DEVICE + + ATLAS OS + YOUR BUSINESS · ONE BOX · BEYOND LIMITS + + + + + + + + + diff --git a/assets/os-screenshot.png b/assets/os-screenshot.png new file mode 100644 index 0000000..f092bc2 Binary files /dev/null and b/assets/os-screenshot.png differ diff --git a/docs/academy.md b/docs/academy.md new file mode 100644 index 0000000..a939c26 --- /dev/null +++ b/docs/academy.md @@ -0,0 +1,40 @@ +# Atlas Academy + +The education arm of Atlas Corporation, running on the same box: [atlasacademy.nl](https://atlasacademy.nl). Coaching, courses, and a curriculum spanning ESF-funded tracks, BiSL, startup, and AI. + +## Hosting + +Served as static HTML + a PHP product feed via nginx (TransIP subsite), fronted by the same brand and analytics as the rest of the stack. + +**Key pages:** `index`, `coaching`, `cursussen`, `pricing`, `leerpad`, `shop`, `esf`, `bisl`, plus per-course pages (`cursussen/bisl`, `cursussen/startup`, `cursussen/ai`). + +## Lead capture → Odoo CRM + +Academy leads flow straight into the operator's Odoo CRM as `crm.lead` records — no manual re-entry. + +``` +Academy page (form) + │ POST { name, email, interest, source } + ▼ +atlas-academy-relay (systemd on atlas-01, port 7793) + │ + ├─► Odoo → creates crm.lead, returns { ok: true, lead_id: N } + └─► email fallback → info@atlascorporation.nl +``` + +The relay is exposed via Caddy at `/academy-lead` (proxied to `127.0.0.1:7793`). It caches the Odoo UID so it doesn't re-authenticate on every lead. + +## Product feed + +Courses and hardware bundles are pulled from WooCommerce via a JSON feed, so the Academy shop stays in sync with the live store without duplicating product data. + +``` +GET https://www.atlasworks.nl/academy-feed.php +→ { ts, count, products[] } # each: { id, title, price, type, img, url, cats } +``` + +Product types: `laptop`, `desktop`, `monitor`, `accessory`, `bundle`, `pos`. + +## Principle + +Academy content follows the same hard rule as the rest of Atlas OS: **no fabricated data.** No invented student counts, testimonials, ratings, or review quotes — sections are left as placeholders or omitted until real data exists. diff --git a/docs/ai-stack.md b/docs/ai-stack.md index 79ca90b..281c533 100644 --- a/docs/ai-stack.md +++ b/docs/ai-stack.md @@ -1,54 +1,69 @@ -# The Atlas AI stack +# AI Stack -Atlas runs AI on three principles: **route by cost** (free/local first, paid last), **review before write** (no autonomous money/comms/self-modify), and **keep a permanent spine** (every decision and event is logged and linkable). +Atlas OS routes every AI task by cost and complexity. The rule: **never burn paid tokens on work a free or local model can handle.** Free tier first, escalate only when it can't cope. -```mermaid -%%{init: {'theme':'base','themeVariables':{'primaryColor':'#0c1428','primaryTextColor':'#cfe2ff','primaryBorderColor':'#1F6FE0','lineColor':'#4EA0FF','fontFamily':'monospace'}}}%% -flowchart TB - Senses[Senses · email · news · WhatsApp · bank]:::a --> Spine[(kernel.sqlite · the spine)]:::b - Spine --> Brain[Atlas Brain · autonomous core]:::a - Brain --> Gate{Policy gate}:::g - Gate -->|money / comms / self-modify| Human[Human approval · Control screen]:::h - Gate -->|safe| Router[LLM router :8888]:::a - Router --> Local[Local · LLaMA · hermes3 · Qwen]:::c - Router --> Cloud[Free cloud · Groq · Cerebras · OpenRouter]:::c - Router --> Claude[Claude · paid · last resort]:::c - classDef a fill:#0c1428,stroke:#4EA0FF,color:#cfe2ff - classDef b fill:#145ED2,stroke:#8EC2FF,color:#fff - classDef c fill:#080c18,stroke:#1F6FE0,color:#9fb8e0 - classDef g fill:#0c1428,stroke:#D4A24C,color:#D4A24C - classDef h fill:#080c18,stroke:#4EA0FF,color:#cfe2ff +## Tier 0 — Zero-cost local (`localhost:8888/v1`, RTX A2000) + +An OpenAI-compatible router exposes local Ollama models. Used for all non-critical subagent work, copy, summaries, translations, and classification. + +| Alias | Backing | Use for | +|-------|---------|---------| +| `atlas-fast` | LLaMA 1B | Ultra-fast classification, routing, labels | +| `atlas-free` | Hermes3 | Dutch copy, summaries, FAQ, product descriptions | +| `atlas-code` | Qwen Coder | Code completion, simple fixes, boilerplate | +| `atlas-qwen` | qwen2.5 | General Dutch content, emails | +| `atlas-phi3` | qwen2.5:7b | Reasoning, analysis, comparisons | +| `atlas-auto` | smart router | Auto-picks the best free local model | + +```python +import openai +client = openai.OpenAI(base_url="http://localhost:8888/v1", api_key="atlas") +client.chat.completions.create(model="atlas-auto", messages=[{"role":"user","content":"..."}]) ``` -## The spine — `kernel.sqlite` +## Tier 1 — Free cloud APIs -The single source of operational memory. Senses feed it continuously; the Brain reads from it; every decision and event is appended and stays linkable across time. It is the answer to *"why did this happen?"* — one place, queryable, durable. +| Provider | Models | Best for | +|----------|--------|----------| +| Groq | llama-3.3-70b-versatile, mixtral-8x7b | Fast 70B reasoning, bulk tasks | +| Cerebras | llama-3.1-70b | Fastest inference, free tier | +| OpenRouter | 50+ free models incl. Gemini | Multi-model fallback | +| Gemini (via OpenRouter) | gemini-2.5-pro / 3.5-flash | 1M context, vision, PDF | -## The Brain — reviewed execution +## Tier 2 — Paid Anthropic (only when free tiers can't cope) -The autonomous core reasons over the spine and proposes actions. It **never** writes to money, external communications, or its own configuration without explicit human approval through the Control screen. Daily brief at 07:45; accountability loop morning / midday / evening. A kill-switch lives in the app. +| Task | Model | +|------|-------| +| Simple classification, short copy | `claude-haiku-4-5` | +| Code, multi-step reasoning, planning | `claude-sonnet-4-6` | +| Deep research, architecture, complex builds | `claude-opus-4-8` | -## The router — cost-tiered model selection +## Routing decision tree -A single OpenAI-compatible endpoint (`localhost:8888`) picks the cheapest model that can do the job: +``` +copy / text / translation / summary / Dutch content + → atlas-free (local) or Groq llama-3.3-70b (free cloud) +simple code / boilerplate / fix + → atlas-code (local) or Cerebras (free cloud) +non-critical workflow subagent + → atlas-auto or Groq (never Claude) +multi-step code / planning / complex reasoning + → claude-sonnet-4-6 +deep architecture / research / competitive analysis + → claude-opus-4-8 or gemini-2.5-pro (free) +1M context / vision / PDF + → Gemini via OpenRouter +``` -| Tier | Models | Used for | -|---|---|---| -| **Local (free)** | LLaMA 1B · hermes3 · Qwen Coder · Qwen 7B | classification, Dutch copy, code, summaries | -| **Free cloud** | Groq `llama-3.3-70b` · Cerebras · OpenRouter | bulk 70B reasoning | -| **Paid** | Claude (Sonnet / Opus) | multi-step reasoning, architecture — last resort | +## Always-on AI services -The rule: never spend a paid token on a task a free model can handle. +| Service | What it does | +|---------|-------------| +| `atlas-brain` | Collects mail + CRM + bank every 15 min → synthesizes the daily brief | +| `atlas-loop` | Background signal loop — publishes nudges to NATS | +| `atlas-meridian` | Autonomous decision engine / battle responder | +| `atlas-litellm` | Unified LLM proxy (OpenAI-compat API for all models above) | +| NATS mesh | Real-time event bus across all devices on the tailnet | +| Langfuse | Full LLM observability — every call traced with latency, cost, tokens | -## Context compression - -A Headroom proxy sits in front of the Anthropic endpoint to compress context (fewer tokens per call) before requests leave the box — applied transparently to the Brain via `ANTHROPIC_BASE_URL`. - -## Where AI surfaces in the OS - -- **Atlas Chat** (Open WebUI) — ChatGPT-style UI over the local models or Claude. -- **AI Gateway** — the router's HTTP face. -- **Remote Desktop** — Claude Code runs inside the in-browser Linux desktop; the OAuth login works because the desktop has a real browser. -- **Today / Inbox / Pipeline** — the Brain's briefs, drafts and lead reasoning rendered as cockpit panels. - -> Honest status: the spine and router are live; full cross-device chat-history consolidation into the spine is a tracked follow-up, not yet complete. +All model calls flow through the LiteLLM proxy so cost and latency are traced centrally in Langfuse, regardless of which tier served the request. diff --git a/docs/islamic-layer.md b/docs/islamic-layer.md new file mode 100644 index 0000000..e398c43 --- /dev/null +++ b/docs/islamic-layer.md @@ -0,0 +1,31 @@ +# Islamic Layer + +A first-class part of Atlas OS — woven into the OS and the device fleet, not bolted on. Live since 2026-05-09. + +## Components + +| Layer | What it does | +|-------|-------------| +| Family-safe DNS | AdGuard Family + a hosts blocklist across the network | +| Content filtering | HaramBlur on browsers | +| Quran at logon | Recitation plays when the workstation logs in | +| Adhan + lock | At El Feth Tilburg salah times, the Adhan plays and the screen locks | +| Sunnah reminders | Recurring reminders surfaced across the device fleet | + +## Salah timing + +Prayer times track **El Feth Mosque, Tilburg**. At each salah time the fleet plays the Adhan and locks the active screen — a deliberate, enforced pause rather than a passive notification. + +## Where it lives + +All assets and scripts are under the Atlas artifacts tree: + +``` +Sync/atlas-artifacts/atlas-os/islamic/ +``` + +This keeps the layer versioned and reproducible alongside the rest of the Atlas OS configuration, and syncs across devices through the same Syncthing topology as the other artifacts. + +## Principle + +The Islamic layer is treated as core infrastructure: it ships with the OS, runs on the fleet by default, and is documented and version-controlled like every other service. diff --git a/web/os/index.html b/web/os/index.html index 93485d4..786f1d4 100644 --- a/web/os/index.html +++ b/web/os/index.html @@ -5,7 +5,7 @@ Atlas OS - +