ENZO Self-Hosted AI Workspace
Run chat, agent tools, and project coding workflows with your own model-provider keys.
Per-dimension scores and reasoning
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.
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.
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.
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.
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.
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.
- 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.
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.
- A homelab operator can host an AI chat workspace locally and use personal provider keys without creating an ENZO account.
- A user with Groq, OpenRouter, NVIDIA, Hugging Face, or Google AI credentials can access multiple model services from one workspace.
- A user who wants email or scheduling actions inside streaming conversations can use the stated Gmail and Calendar agent tools.
- A developer can ask coding mode to write and boot a project, then review the reported startup or runtime failure.
- A team seeking provider-cost access without an additional proxy or markup layer can operate ENZO inside its own deployment boundary.
What are this agent's strengths and limitations?
- 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.
- 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 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 startThe backend starts at http://localhost:5001. In another terminal, start the frontend:
cd synthetic-nature
npm install
npm run devThe 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.
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.