ENZO Self-Hosted AI Workspace

Run chat, agent tools, and project coding workflows with your own model-provider keys.

Source repo
theguysudo/ENZO
Stars
★ 117
Last updated
today
License
Apache-2.0
Primary language
TypeScript

At a glance

How it runs
Self-hosted serviceWeb app
Works with
Universal · cross-platform
Cost
Free software; you pay for model usage
Setup effort
Low · running in minutes
You'll need
Node.js 20+npmProvider API key for model useShell / CLINetwork accessLocal filesystemMCP Server
Typical use
A homelab operator can host an AI chat workspace locally and use personal provider keys without creating an ENZO account.
Not a fit if
  • Compliance-sensitive teams unwilling to store a claimed key in the container .env
  • Organizations that require Google sign-in or a managed SaaS account
Source review
68/100 · Some gaps

What does this agent do, and when should you use it?

ENZO is a self-hostable AI workspace combining a model marketplace, live health checks, a streaming chat terminal, and a coding mode. It routes across nine providers using the operator's own API keys; named options include Groq, OpenRouter, NVIDIA, Hugging Face, and Google AI. Its chat terminal can invoke agent tools, while the repository description specifically identifies Gmail and Calendar tools. Coding mode writes a project, boots it, and reports when it is broken. The deployment consists of a backend on port 5001 and a synthetic-nature frontend on port 5173, both operated within the adopter's environment.

A user supplies a model-provider key in the browser and chooses a provider; ENZO sends requests directly to that provider without an ENZO account or intermediary proxy. The model marketplace performs live health checks, and the streaming chat terminal returns model output while supporting agent tools, including the stated Gmail and Calendar integrations. Coding mode creates or modifies project files, starts the project, and reports failures. The backend is launched with npm start at http://localhost:5001, while the synthetic-nature frontend runs with npm run dev on port 5173.

  1. A homelab operator can host an AI chat workspace locally and use personal provider keys without creating an ENZO account.
  2. A user with Groq, OpenRouter, NVIDIA, Hugging Face, or Google AI credentials can access multiple model services from one workspace.
  3. A user who wants email or scheduling actions inside streaming conversations can use the stated Gmail and Calendar agent tools.
  4. A developer can ask coding mode to write and boot a project, then review the reported startup or runtime failure.
  5. A team seeking provider-cost access without an additional proxy or markup layer can operate ENZO inside its own deployment boundary.

How do you install or deploy this agent?

Node.js 20+ and npm are required. Run:

git clone https://github.com/theguysudo/ENZO.git
cd ENZO
npm install
cp .env.example .env
npm start

The backend starts at http://localhost:5001. In another terminal, start the frontend:

cd synthetic-nature
npm install
npm run dev

The frontend runs on port 5173. Every setting in .env is optional and the server can boot without a key, but model use requires a key for the selected provider.

How do you use this agent?

Start both the backend on port 5001 and the synthetic-nature frontend on port 5173, then open the workspace in a browser. Configure your own key for Groq, OpenRouter, NVIDIA, Hugging Face, Google AI, or another supported provider and select a service through the model marketplace. Use the streaming chat terminal for conversations and agent-tool workflows, or enter coding mode to have ENZO write and boot a project and report failures. The supplied material does not document the exact credential fields or authorization sequence for Gmail, Calendar, or individual providers, so more specific setup commands cannot be verified.

What are this agent's strengths and limitations?

Pros
  • Its BYOK design sends keys from the browser to the chosen provider, with no ENZO account, intermediary proxy, or ENZO markup.
  • Routing across nine providers and live health checks reduce dependence on a single model service.
  • It combines streaming chat, agent tools, and a coding mode that writes and starts projects in one self-hosted workspace.
  • All .env settings are optional, allowing the backend to boot keyless for an initial deployment check.
Limitations
  • Model operation depends on external provider connectivity and user-supplied API keys; pricing, quotas, and outages remain provider-controlled.
  • The backend and synthetic-nature frontend require separate installation and processes, adding Node.js 20+, npm, port, and process-management overhead.
  • Because coding mode writes and launches projects, adopters need to assess the documented threat model and sandbox limits carefully.
  • The repository's license is unknown, creating uncertainty for organizational adoption, modification, and redistribution.
  • The supplied material does not explain Gmail or Calendar authorization and does not name all nine providers.

How does this agent compare with similar options?

The repository positions ENZO as a self-hosted ChatGPT alternative. Unlike a hosted workspace tied to its own account and service gateway, ENZO uses the adopter's provider keys and sends requests directly to the selected provider; in exchange, the adopter assumes deployment, credential-management, and runtime-security responsibilities.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
ENZO Self-Hosted AI Workspace This agent 68 · Some gaps Self-hosted serviceFree + model costs ★ 117 today TypeScript —
gws for Google Workspace 54 · Major gaps CLIFree ★ 32k 7d ago Rust —
Iva Personal Assistant 85 · Good Chat botFree + model costs ★ 287 3d ago TypeScript ChatGPT · Codex
OpenInstinct 65 · Some gaps Self-hosted servicePaid ★ 485 4d ago TypeScript —

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Some gaps
68/ 100 5-point scale 3.4 / 5
This review covers the source as of Sep 17, 2026. The project has shipped 3 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 19/29
Reliability 8/14
Adaptability 15/18
Convention 12/18
Effectiveness 9/13
Verifiability 5/8
Why each dimension lost points
Trust19 / 29 · 3.3/5

The supplied source shows meaningful privilege controls: per-agent tool allowlists, rejection of disallowed calls, exclusion of Gmail-send and calendar-create tools from scheduled runs, explicit opt-in for internet gathering, and HTTPS/private-network/metadata-address guards. The README, CI, and crypto tests also describe a browser vault, encrypted server-side secret files, mode 0600, tamper detection, fail-closed behavior without a master key, key wiping, and a recovery file. Deductions remain because the first validated key automatically claims an instance and is written into container configuration, while actual write-confirmation enforcement is only indirectly evidenced by a context flag and tests. No rollback for completed Gmail or Calendar effects is shown. Statements that keys never enter volumes or are not read by the server do not fully align with the documented claim-key persistence in .env and enzo-memory. Dependency audits block high and critical findings, but no audit result or lockfile contents are supplied. Repository and model provenance are partly recorded, yet package authorship is blank and publisher identity remains unknown.

Reliability8 / 14 · 2.9/5

The evidence covers streamed tool-call assembly, continuation after truncation, agent CRUD, input sanitization, tool authorization, iteration caps, provider fallback, scheduling, SSRF defenses, corrupt-store recovery, and fail-closed encryption. CI additionally defines type checks, tracked-import checks, keyless startup, backend startup, tests, and frontend builds. Provider racing, fallbacks, and conversion of some failures into warnings support ordinary resilience, and many failure messages are specific. The largest deduction is internal inconsistency: the README presents v1.3.0 and Apache-2.0 while package.json reports version 1.0.0 and ISC, and key-location descriptions conflict. Models, search, media, and public-data endpoints remain external dependencies, with not all degradation paths demonstrated in the supplied files.

Adaptability15 / 18 · 4.2/5

The README clearly addresses self-hosted users and research, coding, agent-building, and scheduled-automation scenarios. It provides macOS, Windows, and Linux guidance, lite/full images, hosted-versus-self-hosted differences, and optional configuration, earning strong environment-fit credit. Tool allowlists, size caps, internet opt-in, research budgets, loop limits, disabled scheduled writes, time zones, intervals, and provider fallback establish useful boundaries and trigger behavior. Deductions apply because some boundaries remain descriptive: the exact activity collected by self-training, its retention scope, and its trigger semantics are not fully shown, while manual write confirmation and provider-specific capability differences are not completely substantiated by the supplied implementation.

Convention12 / 18 · 3.3/5

The README has strong navigation and organizes features, quickstart, security, platform setup, configuration, editions, and storage coherently. Installation and routine Docker commands are concrete, including the warning that adding -v wipes data. Examples and troubleshooting cover common startup cases, but there is no dedicated FAQ, and the referenced SECURITY and CHANGELOG contents were not supplied. Metadata stability is weak: examples use both cd enzo and cd ENZO, README/LICENSE say Apache-2.0 while package.json says ISC, and product release v1.3.0 differs from package version 1.0.0. CI establishes that a dated changelog exists and the README summarizes releases, but its actual quality cannot be checked. Update paths and releases are identified, yet package authorship is blank and no maintainer, support channel, security-reporting contact, or response commitment is documented.

Effectiveness9 / 13 · 3.5/5

The product combines multi-provider chat, agent construction, research, code generation, skills, memory, and Gmail/Calendar tooling in a self-hosted workspace. Streaming output, truncated-code continuation, run records, and surfaced warnings provide reasonable evidence of usable outputs and added value. BYOK operation, free-model racing, hard budgets, and the lack of a subscription can reduce intermediary cost. Deductions apply because many benefit claims are first-party marketing assertions without representative task outputs, quality benchmarks, or resource measurements. Racing roughly ten models may also increase request volume, rate-limit pressure, and the number of providers receiving prompts, while Docker resources, API charges, and maintenance costs are not quantified.

Verifiability5 / 8 · 3.1/5

The README connects several security and capability claims to named documents, tests, and CI stages, and the supplied tests/workflow independently support tool restrictions, secret scanning, dependency auditing, keyless boot, encrypted storage, SSRF controls, and scheduler limits. Comments generally distinguish intended behavior from asserted checks. Deductions apply because only part of the repository is supplied: SECURITY, CHANGELOG, core implementations, lockfiles, and several integrations cannot be inspected, nor can exact counts such as 298 tests, 44 pentest assertions, 74 skills, or 300+ models be reconciled here. A CI definition proves that checks are configured, not that this revision passed them. Broad competitor comparisons and claims such as real facts or identical deployed code lack separate corroboration or precise qualification.

Risks and how to mitigate them
  • The first validated provider key can automatically claim a fresh self-hosted instance. Pre-seed a key or restrict network access before exposing a new deployment so another party cannot claim it first.
  • Before using real credentials, verify whether each secret resides in the browser, container .env, or enzo-memory volume, and confirm the erasure boundary across volumes, browser data, and backups.
  • Apache-2.0 in the README/LICENSE conflicts with ISC in package.json. Obtain maintainer clarification before redistribution, embedding, or modification.
  • Gmail sends and calendar creation are external writes without demonstrated automatic rollback. Do not grant broad production-account permissions until code-level confirmation enforcement and OAuth scopes are fully reviewed.
  • Do not treat configured CI audits, tests, and pentests as proof that this revision passed them; inspect revision-specific run results and dependency lockfiles.
  • Free-model racing may send the same prompt to several providers concurrently. Disable or constrain it for sensitive work and review each provider's data-retention terms.
Evidence confidence: Low Reviewed Sep 17, 2026 Reviewed revision b2e0964dbd58 New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v1.6.0 v1.6.0 — Hardened: project ownership, a runtime sandbox for generated code, and a quiet preview
    Release notes excerpt
    This release acts on a full external security & UX audit of v1.5.0 — every finding was verified against the source first, then fixed, tested, and documented. The headline: ENZO now enforces real ownership boundaries and runs LLM-generated backends inside an actual sandbox. Security - Projects are truly yours. Writing into an existing saved project (save-over, delete, manifest) now requires a valid vault session and the creator's device identity. On a shared instance, the vault token alone could never tell users apart (it's instance-wide), and the save route accepted any existing p …
    View on GitHub ↗
  2. v1.5.0 v1.5.0 — Coding mode overhaul + preview lifecycle
    Release notes excerpt
    The biggest pass since launch: the coding mode now behaves like a real builder, and the preview finally communicates. Coding mode - Auto-shift to coding from any mode — "code me a webpage for a cafe" typed in normal, thinking or research mode flips the turn to coding instantly (an unmistakable-intent pattern match; the LLM decider stays normal-only so ambiguous asks never surprise-flip a chosen mode). The cognitive-mode picker itself moves, visible in the UI. …
    View on GitHub ↗
  3. v1.4.0 v1.4.0 — The workspace reads your files
    Release notes excerpt
    ENZO v1.4.0 — self-hosted, bring-your-own-key AI workspace. Highlights - In-chat file converter & research-table extractor — drag research papers, spreadsheets or data files straight into the terminal. Parsing runs entirely in your browser (pdf.js + exceljs — the files never leave your device): a PDF's text layer is rebuilt into aligned columns and real tables, xlsx sheets come in per-sheet, and CSV/TSV/JSON/Markdown parse natively. The agent then extracts, merges or converts across formats — and replies that contain tables carry CSV and Excel download buttons right on the mes …
    View on GitHub ↗

FAQ

Does ENZO require a paid ENZO account?
No ENZO account or ENZO markup is required. Model calls are still subject to the selected provider's prices, quotas, and account terms.
Can the server start without an API key?
Yes. The README says every .env setting is optional and the server boots keyless, although generating model responses requires credentials for a provider.
Do provider keys pass through an ENZO proxy?
The documented design sends keys from the browser directly to the selected provider, with no ENZO proxy in the middle.
What does coding mode actually do?
It writes a project, boots it, and reports when it is broken. The supplied material does not identify supported programming languages or provide stronger sandbox guarantees.
What should an organization verify before adoption?
It should verify the unknown license, coding-mode sandbox boundaries, Gmail and Calendar authorization flow, and whether its required model provider appears in the complete nine-provider list.
View on GitHub ↗ Install ↓

Related agents