Build your company's intelligence layer, without losing control.
Where your team and AI agents work together — a complete, fully open-source platform, from a native desktop app to a secure, self-hosted backend. Bring your own model keys; every risky action waits for a human "yes."
Quick start · What is Evenfire · The platform · Why · Security · Providers · Deploy · Docs · Status · License
The Control UI's usage dashboard: token consumption per model, over time. Tour all three UIs →
Quick start
This quick start runs the whole platform on a local minikube cluster — the fastest way to try Evenfire on your workstation.
Stand up every service on minikube with one command, including a seeded agent
named chatllm. On a fresh minimal install, setup consumes the first-run
admin bootstrap before any login, creates the matching Desktop identity, and
records the governed initial_setup GFS operator link atomically:
git clone https://github.com/evenfire-ai/evenfire.git && cd evenfire
cp .env.example .env
# edit .env: set ADMIN_PASSWORD (required, no default ships) and ONE LLM key
MINIKUBE_IMAGE_TAG=latest make minikube-setup # see the note below on this override
make minikube-status # wait for every deployment READYThe seeded admin@evenfire.local Desktop account is therefore the initial GFS
operator. Re-running setup is idempotent: it may log in to verify the existing
active link, but it never recreates a revoked link or silently creates a second
ordinary member. If the link is missing, setup stops with an actionable error.
Then run the UIs from your workstation and say hello to the chatllm agent:
make install-all && npm --prefix control-ui install
npm run ui # Control UI + Profile UI + Desktop AppThe full walkthrough (prerequisites, login, and the pure-API path) is in Get started on minikube.
Evenfire is meant to be run on a remote cluster — see Deploying to a remote cluster.
What is Evenfire
Evenfire is a complete platform for running LLM agents that take real actions on your infrastructure.
Agents in Evenfire can:
- Converse across the native desktop app, Telegram, Microsoft Teams and Slack
- Call tools over the Model Context Protocol (MCP)
- Share teams, files, and cost budgets
- Compose multi-step workflows
- Configure guardrails through approval thresholds, budget caps, network deny-rules, and tool-level scopes so risky actions automatically pause for human review
- Install plugins that ship their own UX and expose themselves as MCP server tools, so agents can interact with them through chat
Every piece of the fleet — agents, connectors, channels, workflows, policies, plugins — is a Kubernetes custom resource, so your platform is version-controlled, reviewable configuration. You bring your own model keys, so prompts and data flow only to the provider you choose
The platform
Evenfire is not just an agent runtime. It is nine first-class capabilities, each backed by code in this repo and declared as configuration. Each row links to its deep dive.
| Capability | What you get | Deep dive |
|---|---|---|
| Agents | Real actions across Telegram / Email / Slack / desktop (shell_exec, HTTP, a real browser, files), plus memory and approval gates | mcp-host |
| Console & client | An admin Control UI console and an Electron Desktop App, plus a small Profile UI for invites | surfaces |
| Connectors (MCP) | Governed MCP servers with per-Context allowlists; stdio tools via the bridge; remote SaaS behind a pinned egress proxy | mcp-servers |
| Workflows | Declarative multi-workload WorkflowRecipes with a lifecycle: risk-based approval, shadow testing, rollback | workflowrecipe |
| Plugins & registry | Author, publish, and install connectors and recipes through a governed, trust-rated registry | workflow-sdk |
| Teams & access | Profiles, teams, roles (admin / inviter / member), invitations, and session → scoped-RPC token brokerage | external-rest-api |
| Files | Read-only team workspaces agents can draw on, plus a brokered, audited shared drive where every read and write is checked and logged | gfs-controller |
| Cost & governance | Token budgets per scope (block/warn), usage and LLM-price accounting, and a connector-image allowlist | token budgets |
| Config as code | The whole fleet as eight clerum.io (why that name?) CRDs: version-controlled, reviewable, GitOps-friendly | crds |
Why Evenfire
- vs a hosted assistant: you own the data and the infrastructure. Evenfire adds no vendor to the request path: with your own model keys, prompts and files go straight to the model provider you choose. Point an agent at a self-hosted or local model and nothing leaves your environment at all.
- vs an in-process agent framework: real isolation and governance: per-agent pods, default-deny networking, multi-tenant teams and roles, and approvals enforced by the platform rather than by the calling application.
- vs rolling your own: batteries included. You get channels, approvals, a connector registry, shared files, and cost accounting, all declared as configuration instead of assembled by hand.
- vs betting on one provider: the same agents, tools, and configuration run across a growing roster of providers, from frontier labs to local LLMs. Pick whichever model gives the best cost/quality tradeoff for each job, and switch providers without rebuilding, so your setup and data are never locked to a single vendor.
Security model
We never fully trust the model. It can be steered, misled, or simply wrong, so four layers constrain what it can do:
- Risky actions wait for a human. Commands, outbound HTTP, and browser control are approval-gated: the task suspends until someone approves from the channel, and callbacks are signature-verified.
- Least privilege. Each agent reaches only the connectors its
Contextgrants, through short-lived, scope-narrowed tokens that can't widen themselves; container images must match a pinned digest and an allowlist. - Deny-all networking. Runtime namespaces start with no connectivity; access is opened per (agent, connector), and outbound traffic is pinned to the specific hosts a connector declares, never the open internet.
- Authenticated internals. Every service-to-service call carries a short-lived, audience-scoped token; shared-file access is re-checked and audited on each request, and inbound webhooks are signature-verified.
Report vulnerabilities privately: SECURITY.md.
Supported LLM providers
A broad, growing set of providers behind one interface, from frontier labs to local models. Keys live in a Kubernetes Secret you create (dev mode: a single environment variable; setup infers the matching provider).
| Provider | provider value | Integration |
|---|---|---|
| OpenAI | openai | Native SDK |
| Anthropic | claude | Native SDK |
| Z.AI | zai | OpenAI-compatible |
| Bailian | bailian | OpenAI-compatible |
| Google Vertex AI | vertex | Native SDK |
| Amazon Bedrock | bedrock | Native SDK |
| OpenRouter | openrouter | OpenAI-compatible |
| Google Gemini | gemini | OpenAI-compatible |
| DeepSeek | deepseek | OpenAI-compatible |
| Groq | groq | OpenAI-compatible |
| Together AI | together | OpenAI-compatible |
| Fireworks AI | fireworks | OpenAI-compatible |
| Mistral AI | mistral | OpenAI-compatible |
| xAI (Grok) | xai | OpenAI-compatible |
| Cerebras | cerebras | OpenAI-compatible |
| DeepInfra | deepinfra | OpenAI-compatible |
| Perplexity | perplexity | OpenAI-compatible |
| Moonshot (Kimi) | moonshot | OpenAI-compatible |
| Nebius | nebius | OpenAI-compatible |
| Novita AI | novita | OpenAI-compatible |
| MiniMax | minimax | OpenAI-compatible |
| Azure OpenAI | azure | Light driver |
Most providers are OpenAI-compatible and plug in as config with no custom code;
only a few (claude, vertex, bedrock, azure) need a dedicated integration.
Overview: docs/llm-providers/README.md ·
Configure: docs/deploy/llm-providers.md ·
Add one: docs/llm-providers/adding-a-provider.md ·
Details: mcp-host/README.md.
Deploying to a remote cluster
The quick start runs on local minikube for evaluation. Evenfire is meant to be run on a remote Kubernetes cluster — deploy the platform there with a NetworkPolicy-capable CNI (Calico or equivalent).
Build on the Kubernetes manifests in deploy/base and the
kustomize deploy/overlays — the shipped minikube overlay
is the reference to copy and adapt for your own cluster. Then follow the
production deployment guide for the rollout order,
signing/JWT keys, secrets, and the security non-negotiables.
Development and testing
Each service is an independent npm package. Run npm test in a package, or
make test-unit-all after installing deps; make test-counts prints the live
unit-test file and case totals: "is it real, is it tested" without a hardcoded
number to drift. E2E suites run against minikube with Calico NetworkPolicies and
the approval flow: docs/testing/e2e-guide.md.
Contributor loop: CONTRIBUTING.md.
Docs and components
Start here
| Doc | For |
|---|---|
| docs/README.md | Docs index |
| docs/get-started/learning-path.md | Role-based path |
| docs/concepts/why-evenfire.md | Product intent |
| docs/concepts/when-to-use-evenfire.md | Fit by category |
| docs/faq.md | FAQ & troubleshooting |
| ARCHITECTURE.md | Architecture & data flow |
| docs/crds/README.md | Config as code (the 8 CRDs) |
| docs/llms.txt | Map for coding agents |
Components: every deployable service has its own README (the deep dive):
| Component | Role |
|---|---|
| mcp-host | Agent runtime: LLM loop, tools, approval gate |
| channel-reader | Telegram / Email / Slack ingress |
| control-api | Control plane: CRDs, secrets, token mint, usage |
| control-ui | Admin dashboard |
| profile-ui | End-user profile and invitation confirmation |
| desktop-app | Electron + React desktop client |
| external-rest-api | Auth, profiles, teams, RPC-token brokerage |
| rpc-proxy | External JWT-gated gateway for desktop/tenant traffic |
| host-context-controller | Operator: CRDs → Deployments + NetworkPolicies |
| workflow-recipes | Operator: WorkflowRecipe lifecycle |
| gfs-controller | Brokered GlobalFileSystem API + audit chain |
| workspace-files-controller | SharedFileSystem write path |
| mcp-proxy | Optional centralized MCP router |
| mcp-servers | Connector catalog (MongoDB, Airtable, …) |
| stdio-bridge | Sidecar: stdio MCP → StreamableHTTP |
| nginx-egress-proxy | Pinned egress path for remote connectors |
| webhook-gateway | Per-recipe webhook signature verifier |
| webhook-proxy | Stateless public webhook router |
| workflow-approval-request-reader | Inbound Telegram/Slack approval callbacks |
Ops & platform directories:
- monitoring/: optional Grafana + Loki log stack
- deploy/: Kubernetes manifests per namespace
Status
Evenfire is in beta and under active development. The whole platform runs end to end and comes up locally with one command, but some APIs and CRDs may still change before a 1.0 release; pin a release tag if you need stability.
The code uses the internal name clerum for the same project (clerum.io CRDs,
CLERUM_* env vars, clerum-* packages); see
code names.
Community and license
- CONTRIBUTING.md: dev loop, what we accept
- SECURITY.md: private vulnerability disclosure
- GOVERNANCE.md: project governance
- CODE_OF_CONDUCT.md: community standards
Evenfire is open source under the Mozilla Public License 2.0 (MPL-2.0), an OSI-approved, file-level copyleft license.