theguysudo/ENZO: Self-hosted AI workspace with brokers, abilities, and instruments (Gmail, Calendar) that runs totally by yourself supplier API keys (BYOK). Deliver your personal keys — Groq, OpenRouter, NVIDIA, Hugging Face, Google AI. · GitHub
Quickstart ·
Live demo ·
What’s inside ·
Security ·
What’s new ·
Usage guide ·
Changelog
Chat with 300+ fashions. Build brokers that write their very own working manuals. Research, generate code, run all of it — in your keys, in your transport systems. When you ship a message, the request goes out of your browser via ENZO to the supplier you picked, and also you pay that supplier their regular worth. Nothing sits in between taking a lower. There isn’t any ENZO account, no utilization meter, no subscription.
| Inside ENZO | Count | What it provides you |
|---|---|---|
| Models in a single catalog | 300+ | throughout 9 suppliers, health-checked reside |
| Injectable agent abilities | 74 bundled | area playbooks the agent loop pulls in per run |
| Self-drafting brokers | 2-pass builder | plain-English activity in, working handbook out |
| CI pipeline phases | 7 | together with a black-box safety pentest on each push |
| Pentest assertions | 44 | auth bypass, IDOR, hostile payloads, stream integrity |
| Unit + safety assessments | 298 | agent, vault, crypto and mannequin suites |
| TypeScript (strict) | ~44,000 strains | one language, strict mode all through |
| Releases | 5 | v1.0.0 → v1.4.0, every part within the changelog |
git clone https://github.com/theguysudo/ENZO.git
cd enzo
docker compose up -d
# → http://localhost:5001
That’s the entire set up. No accounts, no necessary env, no database server. Open the app, press Login, and decide any supplier:
| Provider | What you want | Free tier |
|---|---|---|
| OpenRouter | API key | many free fashions |
| Google AI Studio | API key | beneficiant free tier |
| NVIDIA NIM | API key | free credit |
| Groq, HuggingFace, Cloudflare, Gemini | API key / OAuth | varies |
Keys are saved encrypted in your browser (passphrase-protected vault, with a restoration file you’ll be able to obtain). You can wipe them anytime from the Vault.
On a contemporary self-hosted occasion the first live-validated key you paste claims the occasion — it is written to the container .env and sealed into the enzo-memory quantity, so each server-side characteristic (brokers, abilities, reminiscence) unlocks instantly and survives restarts. No grasp key to configure, no setup wizard — paste a working key and go. (Pre-seed a supplier key in compose env as an alternative for those who’d reasonably not have the declare window in any respect; the threat model states this commerce plainly.)
Tip
Try it hosted first: https://enzo-hub.duckdns.org — the identical app, operating on our transport systems. This repo is strictly that code, minus Google sign-in (self-hosted login is simply your supplier keys) with a trimmed default theme set for a small obtain.
Don’t need the native trouble — or need ENZO reachable from any machine? The Colab pocket book does the entire setup for you: it clones this repo, installs the dependencies, builds the UI and boots the server, then palms you a URL.
- Click the button — the pocket book opens in Colab (a free Google account is sufficient).
- Run all cells (
Runtime → Run all, orCtrl/⌘ + F9) — set up + construct takes ~4–5 min the primary time; each cell is idempotent, so a re-run reuses what’s already there as an alternative of beginning over. - Take your URL — the final cell prints two hyperlinks: a Colab hyperlink that works within the browser you are already in, and a Cloudflare tunnel hyperlink that works out of your telephone or another machine (free, no account). The tunnel URL modifications every session; the Colab hyperlink is sure to your session.
Stays up for the entire session. The pocket book arms two disconnect-prevention mechanisms earlier than handing you the URL: a keep-alive that resets Colab’s ~90-minute idle timer each 60 seconds whereas the tab is open, and a watchdog thread that pings the server each 5 minutes and restarts it routinely if it ever dies. Free Colab caps a session at ~12 hours, so a 6-hour run suits comfortably; when a session does finish, one click on on Run all brings every part again.
Note
The pocket book runs on Google’s {hardware}, so Colab’s phrases apply whilst you’re there — however your mannequin keys keep yours: paste any supplier key after boot, precisely like self-hosting, and nothing is ever saved on our facet. When the Colab session ends, every part on the VM is gone.
| Surface | What it does |
|---|---|
| Terminal | Streaming chat with 300+ fashions — regular, pondering, analysis and coding modes — with a reside ECG-style well being hint within the toolbar that flatlines pink the second the catalog is unreachable |
| Model market | One unified catalog throughout all 9 suppliers — playing cards now carry the platform’s personal cowl artwork and a analysis panel with actual obtain counts, licences and benchmarks |
| Music participant | Search any track and play it within the market — keyless, no YouTube API key — with a 5-band equalizer that really re-shapes the audio |
| Agent builder | Describe a activity in plain English; ENZO drafts the agent’s full working handbook, and the agent retains coaching itself in your exercise from then on |
| Research mode | A deep-research loop that writes its personal queries, reads what it finds, and decides when it is performed — beneath arduous budgets so it might probably’t burn your key |
| Code-gen | Writes a coding mission, boots it, previews it reside, and tells you when it is damaged |
| Vault | Every key sealed within the browser, hooked up per-request, wipeable in a single click on |
- Pass 1 — evaluation. A two-pass drafter reads the area of your activity (“an agent that researches MUN nation positions”) and derives what the handbook must cowl: tacit data, resolution heuristics, edge circumstances.
- The race. When a draft wants a mannequin, ~10 free candidates from your personal suppliers hearth concurrently — the primary to reply wins, stragglers are aborted, and a brain-health scoreboard reorders future races by which fashions really ship. Dead or rate-limited free-tier fashions can now not collapse a draft.
- Honest provenance. Every agent information which mannequin really drafted it — and says so plainly when nothing was reachable.
- It does not cease. A per-agent neural layer folds in domain-matched platform exercise on a 90-second cadence, distills classes into reminiscence, and injects a reside NEURAL FOCUS block into each run. Watch it within the agent’s Neural tab.
Most “AI workspaces” maintain your keys, meter your utilization, or want a subscription to exist. ENZO is constructed the opposite approach round:
| ENZO | Hosted AI apps (ChatGPT, Poe, …) | Typical self-hosted AI instruments | |
|---|---|---|---|
| Who pays the mannequin | you, on to the supplier | the seller (plus markup) | you |
| Where API keys reside | your browser, AES-256-GCM sealed beneath a non-extractable key | vendor’s servers | server-side env/config |
| Server reads your keys | hosted mode: by no means — relay-only, CI-enforced. Self-hosted: solely the important thing you explicitly declare, for scheduled brokers — said within the threat model | sure | often sure |
| Middleman charge | none | subscription / per-seat | none |
| Install | docker compose up -d, zero config |
none (it is hosted) | usually multi-service setup |
| Agents enhance themselves | neural layer learns out of your exercise | no | no |
| Security testing in CI | black-box pentest, 44 asserts, each push | opaque | not often |
(Competitor column is in regards to the class, not particular merchandise — particulars range.)
The full risk mannequin is written down — checkable, with the code that makes every declare true — in docs/SECURITY.md. The quick model:
- Keys are sealed in your browser with AES-256-GCM beneath a non-extractable WebCrypto key. It may be used to decrypt your keys whereas by no means being copied — no JavaScript can export its bytes, ours or an attacker’s. Optional passphrase mode re-seals every part beneath PBKDF2-SHA256 (600,000 iterations) and deletes the machine key totally.
- One module touches key storage, and CI enforces it. A pipeline stage greps the frontend for any uncooked
localStoragekey learn and fails the construct on successful — a missed key-access website is a pink construct, by no means a manufacturing bug. - Every push runs a 44-assertion black-box pentest in opposition to a booted server — auth bypass, hostile payloads, IDOR, stream integrity — plus a keyless-boot proof: the server should begin with zero supplier keys. That’s the BYOK assure, examined, not promised.
- The limits are said up entrance. Self-hosted mode shops the primary key you declare within the container
.env(sealed within the reminiscence quantity) so scheduled brokers can run whereas your browser is closed — that commerce is documented, not hidden. docs/SECURITY.md covers what’s protected, what is not, and why.
- In-chat file converter — connect a PDF, spreadsheet, CSV, JSON, TXT or Markdown file within the terminal chat and it is parsed to actual textual content/rows in your browser (recordsdata by no means go away the machine; solely the reasoning step makes use of your personal key, like regular chat). The agent extracts, merges, or cross-converts — and CSV / Excel obtain buttons seem proper on the reply. Built for analysis papers: “extract each desk and merge into one CSV” now works finish to finish, and scanned PDFs report their lacking textual content layer as an alternative of failing.
- Run it on Google Colab — one click on on the Open In Colab button (see Run on Google Colab): the pocket book clones, installs, builds and boots ENZO on Google’s {hardware}, palms you a URL on your browser plus a tunnel URL on your telephone, and arms a keep-alive + watchdog so it stays up for six+ hours.
- Self-healing Docker pulls — the container now verifies its dependencies on each begin and installs something lacking earlier than the server boots (
ENZO_AUTO_INSTALL=0to skip). A pulled picture cannot boot damaged.
- Music participant — search any track and play it straight from {the marketplace}, keyless (no YouTube API key, no quota): a collapsed nook capsule expands right into a full participant card — vinyl disc hero, queue strolling, shuffle/loop/like, keyboard controls. For You turns your personal listening historical past (stored device-local) into track seeds via your personal supplier key.
- Real equalizer — a 5-band Web Audio EQ (bass / low-mid / mid / presence / air, ±12 dB, preamp, 5 presets) that genuinely re-shapes the frequency response once you decide in. Enhance begins off — regular playback is untouched. Tracks the enhancer cannot stream fall again to the YouTube engine routinely; playback by no means breaks.
- Marketplace, redesigned — each mannequin card now carries the platform’s personal cowl artwork, model color on hover, reside well being dot + latency, and a analysis panel with actual details: HuggingFace obtain counts, licences, data cutoffs, Artificial Analysis scores and a Wikipedia-backed household abstract — pulled keyless from public endpoints, by no means guessed.
- NYC Subway theme — the workspace’s new flagship backdrop: an AI-animated subway experience via a tunnel, with a handheld-camera tremble, monochrome movie grade and animated recording grain added in code (the video ships clear).
- A quieter interface — the entire workspace went monochrome + a single coral accent: the terminal toggle change rebuilt (was a 385-line element with useless animations), the climate chip moved up beside the catalog header, the nav collapses on scroll and is derived again, and the highest bar received a cursor-reactive dot grid.
- Previously in v1.2.0: the terminal well being ECG, the onboarding stepper, ambient climate, the smoke high bar.
- Full historical past:
docs/CHANGELOG.md.
Requirements: Docker Desktop for Mac (Apple Silicon or Intel). Allocate no less than 4 GB RAM in Docker Desktop → Settings → Resources (the mannequin catalog + brokers like headroom).
git clone https://github.com/theguysudo/ENZO.git
cd ENZO
docker compose up -d
Open http://localhost:5001, press Login, and paste a key from any supplier (OpenRouter, Google AI Studio, NVIDIA NIM — all have free tiers; hyperlinks are within the app). You’re in.
Everyday instructions
docker compose logs -f # comply with what the server is doing
docker compose restart # bounce the app, information survives
docker compose pull && docker compose up -d # improve to a brand new launch
docker compose down # cease (add -v ONLY to wipe all information)
Where your stuff lives: initiatives, discovered abilities and agent reminiscence are in named Docker volumes (docker quantity ls | grep enzo) — they survive upgrades and down. Your supplier keys by no means contact the server: they’re sealed in your browser’s vault, and on a contemporary set up the primary key you paste claims the occasion for server-side options (scheduled brokers).
If the app feels gradual on a MacE book: the video themes are GPU-composited; on battery or an older machine, flip the Lite/Full chip (bottom-right) — it swaps video backgrounds for pure shader ones with one click on.
Updating: docker compose pull && docker compose up -d. Releases are tagged at github.com/theguysudo/ENZO/releases.
Requirements: Docker Desktop for Windows with WSL 2 (Docker Desktop’s installer units this up; reboot when it asks). Give it ≥ 4 GB RAM in Settings → Resources.
In PowerShell (no clone folder wanted — git comes with Docker Desktop’s WSL distro, or use Git for Windows):
git clone https://github.com/theguysudo/ENZO.git
cd ENZO
docker compose up -d
Open http://localhost:5001 in your browser, press Login, paste a supplier key — performed.
Everyday instructions
docker compose logs -f # comply with the server log
docker compose restart # bounce the app
docker compose pull; docker compose up -d # improve to a brand new launch
docker compose down # cease (add -v ONLY to wipe all information)
Windows notes
- If
http://localhost:5001does not load, verify Docker Desktop is operating (whale icon within the system tray), thendocker compose ps— the port is listed there. - Anti-virus software program sometimes slows the primary boot (picture extraction). The second begin is quick.
- Everything else — volumes, keys, the Lite/Full chip — works precisely as on macOS.
git clone https://github.com/theguysudo/ENZO.git
cd ENZO && docker compose up -d # → http://localhost:5001
- Live terminal well being ECG — the static ONLINE label is now a heart-monitor hint sweeping the terminal toolbar; reachable catalog retains it beating, the rest freezes a pink flatline.
- Onboarding, rebuilt — an animated stepper walks the three connect-provider steps (numbers morph into checkmarks, accomplished steps are click-back-navigable), with a liquid save change that ticks when your key lands.
- Ambient climate card within the market sidebar — one keyless IP geolocation + Open-Meteo, cached half-hour, degrading quietly.
- Smoke behind the glass — the highest bar carries a gradual violet/cyan drift (WebGL fbm, low-power context) and a ~20% slimmer silhouette.
- Previously in v1.1.0: the customized agent builder, race drafting, the neural layer, and ~20 hardening fixes.
- Full historical past:
docs/CHANGELOG.md.
Every push to foremost runs the total pipeline in .github/workflows/ci.yml — 7 phases:
- Security checks — no key literals in tracked recordsdata,
.envby no means dedicated, keys by no means learn from uncookedlocalStorage, no onboarding bypasses - Backend — strict TypeScript, each imported file tracked, unit assessments (298 assertions throughout agent, vault, crypto and mannequin suites)
- Dependency audits — backend + frontend, fail on any excessive/essential vulnerability
- Black-box safety pentest — 44 reside assertions in opposition to a booted server: auth bypass, hostile payloads, IDOR, stream integrity
- Keyless boot proof — the server should boot with zero supplier keys
- Frontend — strict TS + manufacturing construct with an enforced gzipped bundle funds
- Repo hygiene — no massive binaries, changelog and agent docs current
newest / lite |
full |
|
|---|---|---|
| Homepage background | Nebula drift — animated WebGL | + 8 anime video themes |
| Workspace/terminal background | Default Particles (three.js) + the NYC Subway experience | + 9 cinematic video themes |
| Image obtain | ~150 MB | ~470 MB |
Both animate by default — the lite themes are GPU shaders, not static pictures. To get each theme:
ENZO_IMAGE=ghcr.io/theguysudo/enzo:full docker compose up -d
Everything you make lives in Docker named volumes, protected throughout upgrades:
enzo-projects— generated coding initiativesenzo-skills— abilities the agent discovered from GitHub reposenzo-memory— the agent’s sturdy notes about your work
Your supplier keys are not within the volumes — they’re browser-side (encrypted at relaxation together with your passphrase).
Everything works with zero setting variables. Just a few options need server-side values — put them in a .env subsequent to docker-compose.yml:
# Extra origins allowed to name the API (comma-separated)
ENZO_CORS_ORIGINS=https://enzo.example.com
# "Connect with Cloudflare" OAuth button (non-obligatory — pasting a token works too)
CLOUDFLARE_OAUTH_CLIENT_ID=...
CLOUDFLARE_OAUTH_CLIENT_SECRET=...
# HuggingFace OAuth app for the HF onboarding step (non-obligatory — token paste works)
VITE_HF_CLIENT_ID=...
HF_CLIENT_SECRET=...
VITE_HF_CLIENT_IDsolely takes impact when constructing the picture from supply (it is baked into the frontend at construct time).
docker construct -t enzo:mine --build-arg THEME_VARIANT=full .
This picture is generated from the identical codebase that runs https://enzo-hub.duckdns.org, with precisely two characteristic variations:
- No Google sign-in. The hosted website presents Google OAuth as a comfort; right here, login is setting your supplier keys. Everything else — suppliers, analysis, coding agent, vault, reminiscence, abilities — is an identical.
- Default themes (lite picture). The first homepage and workspace themes run as pure WebGL/three.js so the picture stays small. The
fullpicture has the entire set.
Apache-2.0 — see LICENSE.
One command. Your keys. No intermediary.docker compose up -d → http://localhost:5001 · or strive it reside at enzo-hub.duckdns.org
If ENZO saves you a intermediary, a ⭐ helps different folks discover it.



