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


60-second no-cut demo: paste your provider key (masked), chat streams a real Groq answer, search the unified model catalog, describe a task once and ENZO drafts the agent's operating manual with the live key, then runs it

Quickstart ·
Live demo ·
What’s inside ·
Security ·
What’s new ·
Usage guide ·
Changelog

stars
unique visitors
unique cloners
total clones
CI
License
Docker
Models
Self-hosted

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.

Run on Google Colab — zero set up

Open In Colab

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.

  1. Click the button — the pocket book opens in Colab (a free Google account is sufficient).
  2. Run all cells (Runtime → Run all, or Ctrl/⌘ + 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.
  3. 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.

Six surfaces, one workspace

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

How the agent builder works

  1. 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.
  2. 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.
  3. Honest provenance. Every agent information which mannequin really drafted it — and says so plainly when nothing was reachable.
  4. 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 localStorage key 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=0 to skip). A pulled picture cannot boot damaged.

What’s new in v1.3.0 (earlier)

  • 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:5001 does not load, verify Docker Desktop is operating (whale icon within the system tray), then docker 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

What’s new in v1.2.0 (earlier)

  • 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:

ENZO's 7-stage CI pipeline — including a black-box security pentest with 44 assertions and a keyless BYOK boot proof — versus a typical self-hosted AI app's typecheck-plus-tests CI

  1. Security checks — no key literals in tracked recordsdata, .env by no means dedicated, keys by no means learn from uncooked localStorage, no onboarding bypasses
  2. Backend — strict TypeScript, each imported file tracked, unit assessments (298 assertions throughout agent, vault, crypto and mannequin suites)
  3. Dependency audits — backend + frontend, fail on any excessive/essential vulnerability
  4. Black-box safety pentest — 44 reside assertions in opposition to a booted server: auth bypass, hostile payloads, IDOR, stream integrity
  5. Keyless boot proof — the server should boot with zero supplier keys
  6. Frontend — strict TS + manufacturing construct with an enforced gzipped bundle funds
  7. 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 initiatives
  • enzo-skills — abilities the agent discovered from GitHub repos
  • enzo-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_ID solely 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 .

What’s completely different from the hosted deployment

This picture is generated from the identical codebase that runs https://enzo-hub.duckdns.org, with precisely two characteristic variations:

  1. 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.
  2. Default themes (lite picture). The first homepage and workspace themes run as pure WebGL/three.js so the picture stays small. The full picture 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.



Source link