Self-hosted personal agent OS for builders. Own your cognitive infrastructure.
Think about your personal
Jarvisβ’. A bit wiser thanDum-Eβ’, but not yetVisionβ’ level.
You run Eidan on your own server, computer, raspberry, pod, whatever. It keeps the long-running memory β your conversations, notes, and whatever your tools feed in β in a Postgres database that's yours to read, back up, and walk away with. New features arrive as plugins: one folder can add backend code, a UI screen, its own database tables, agentic behaviours, and an MCP server.
The Core is open source forever.
You can write plugins by yourself, or purchase pre-packaged sets.
Built for π» neurodivergent builders, π€ indie hackers, and solo founders who want cognitive continuity without SaaS lock-in.
The shortest path to a running agent. Assumes Docker + VS Code on your host machine. Full walkthrough with vendor screens and troubleshooting lives in LOCALHOST.
On your host machine (not in the dev container yet):
git clone https://github.com/sielay/eidan.git && cd eidan
cp .env.example .envOpen .env and fill in two values (everything else has dev defaults):
ANTHROPIC_API_KEY=sk-ant-... # console.anthropic.com β API Keys
EIDAN_AUTH_MASTER_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(48))")
EIDAN_AUTH_ALLOWED_EMAIL=you@example.com # the only address that can log inOpen the repo in VS Code β Reopen in Container (3-5 min first build). The dev-container compose stack brings up Postgres + a Caddy reverse proxy alongside the app; no host-side services needed.
Inside the dev container:
make doctor && make migrate && make login
# `make login` mails a magic link via SMTP (when configured) and
# always prints it to the backend log; in dev mode the link is also
# echoed back on the response body so you can click without SMTP.Now pick a surface:
- CLI REPL:
make replβ type at your agent in the terminal,Ctrl+Dto leave. - Web UI + backend together:
make dev(orpnpm dev) β runs FastAPI on:8000and Next.js on:3001behind a Caddy reverse proxy on:3000. Open http://localhost:3000 β single origin, no CORS dance.
That's it. For bare metal, standalone Postgres, deployment, or troubleshooting see Other easy ways to start below.
Three surfaces talk to the same agent loop, all backed by the same Postgres memory:
- CLI REPL β
make repl, fastest dev iteration; runs the loop in-process. - FastAPI HTTP server β
make serverruns the backend; the CLI speaks to it remotely whenEIDAN_BACKEND_URLis set. Same shape production uses. - Web UI β
apps/web(Next.js, App Router) for the browser. See the Phase 1 UI surface β for what's shipped.
Pick where to host them:
| Path | When to pick | Where |
|---|---|---|
| Dev container (recommended for local) | You have Docker + VS Code. Python, Postgres, and a Caddy reverse proxy come prewired. ~5 minutes. | β devcontainer quickstart |
| Bare metal | You'd rather install Python / Postgres / Node yourself, or you're targeting a Pi. ~15 minutes. | β bare-metal walkthrough |
| Full-stack deploy | Hosted backend + web UI exposed to a browser; single-host Fly, Pi cluster, multi-instance. | β deployment guide |
Auth is native β magic-link sign-in against a single-operator
allow-list (EIDAN_AUTH_ALLOWED_EMAIL), an RS256 JWT minted by the
host, and an encrypted secrets vault in Postgres. No Supabase project,
no JWKS round-trip. The full flow is pinned in AUTH FLOW;
the vault model is in SECRETS.
Plugins under plugins/ load automatically. Core ships two:
learnβ surveys what you already know about a topic (knowledge + notes + recent messages) before the model improvises.captureβ write-side tools the agent uses to save what it learned:remember(curated knowledge),note(working memory),event(calendar-like items).
Together they form the basic "agent manages your memory" loop. See PLUGINS to add your own.
- π§ Persistent memory β events, knowledge, notes, user/agent context
- π€ Agent orchestration β long-running agents, async jobs, real-time updates
- π Self-hosted β your data, your infrastructure, your rules
- π Extensible β MCP tools, LLM integrations, custom agents, plugin-extensible end to end
- π Memory routing β skill domains, event types, semantic organization
- π Distributed β optional nodes (Raspberry Pi, etc.)
- Single user per stack, no RLS policies.
- For extra features, integrations and capcities see eidan.dev.
- For enterprise level features contact licence@eidan.dev
Community-sourced plugins are welcome, as long as they are released under an AGPL-compatible licence. The community plugin guide walks through the AGPL implications, plugin-author CLA, and what the host contract requires of a third-party plugin.
flowchart LR
user(["User / Browser"])
web["apps/web<br/>Next.js (App Router)"]
backend["apps/backend<br/>Python / FastAPI<br/>(agentic loop, MCP, providers)"]
db[("Postgres<br/>schema: eidan<br/>+ plugin_<name>")]
providers[("LLM providers<br/>Anthropic, OpenAI, Gemini,<br/>Mistral, local (Ollama)")]
mcp_in[["Inbound MCP<br/>(host + plugin servers)"]]
mcp_out[["Outbound MCP<br/>(plugin-wrapped upstreams)"]]
user --> web
web -- HTTP / WS --> backend
backend --> db
backend --> providers
mcp_in --> backend
backend --> mcp_out
The stack is Python on the server, Next.js on the client. The
FastAPI app in apps/backend owns the agentic loop, persistence, and
provider calls. It is designed to run multi-instance (Fly.io, Pi
cluster, etc.) with Postgres as the shared source of truth; work that
needs a single owner (cron, leases, sequencing) elects a leader
rather than assuming one process.
β apps/
| βββ cli/ # CLI interface for management, migrations,
| | # and other utilities, as well agnet REPL loop
| βββ web/ # Next.js (App Router). Plugin frontends mount here.
| βββ backend/ # Python / FastAPI. Owns the agentic loop, MCP,
| # providers, persistence. Loads plugins.
β packages/
| βββ schemas/ # JSON Schema source of truth.
| # Generates @eidan/schemas (Zod + TS types)
| # and eidan-schemas (Pydantic v2 models).
β plugins/
| βββ <name>/ # One folder per plugin. Tier (core/pro/commercial)
| # declared in plugin.yaml as bundle metadata. This
| # repo carries only tier: core plugins; paid plugins
| # live in standalone private sibling repos
| # (see docs/018 Β§2) and are dropped here by
| # the eidan CLI.
β migrations/
| βββ versions/ # Alembic migrations on the eidan schema. Core
| # revisions only. RLS / cross-cutting refinements
| # ship from the universal paid baseline β see docs/018.
β docs/ # Numbered specs. See docs/ARCHITECTURE.md
# for the canonical overview.
Plugins own their own Python package, Next.js routes/components,
Alembic migrations (in a per-plugin plugin_<name> schema, co-located
at plugins/<name>/migrations/), agentic behaviours, and an optional
MCP server β declared in a single plugin.yaml per plugin. See
PLUGINS for the contract.
The Core ships the host, the memory model, the agentic loop, the provider abstraction, the schemas package, and the minimal UI surface in UI_SURFACE.
Provider-specific integrations that need OAuth, vault entries, and per-user credential rotation SECRETS Β§7 live behind the plugin contract and ship via plugins.
The events table in core MEMORY DDL Β§4 is
the generic substrate; the integration that imports a
calendar provider into it is a plugin, not core.
Memory lives in Postgres under the eidan schema. Core defines eight
first-class tables:
conversationsβ thread container.messagesβ append-only turn log, tree-shaped viaparent_message_id.eventsβ calendar-like items (due, occurred, recurring, status).knowledgeβ curated, skill-tagged markdown with source attribution.notesβ working memory written by an agent in a conversation.agent_contextβ per-agent identity: code defaults + user overrides.user_contextβ durable user facts (identity, goals, constraints, preferences, projects).llm_callsβ per-provider-call telemetry (tokens, cost, latency).
The full DDL is in MEMORY DDL.
| Feature | Eidan | OpenClaw | n8n | Onyx |
|---|---|---|---|---|
| Personal OS | β Yes | Partial | No | No |
| Persistent memory | β Events + knowledge | Basic | Stateless | Knowledge-only |
| Multi-agent | β Coordinated | Fragmented | Workflow-based | Enterprise search |
| Local-first | β Default | Yes | Optional | Cloud-only |
| Self-hosted | β Easy | Complex | Yes | No |
| Memory routing | β Skill domains | No | No | No |
| Open source | β AGPL | Yes | Yes | No |
| Designed for individuals | β Yes | Developers | Teams | Enterprise |
| One-click deploy | β <5 clicks | 20+ steps | 10+ steps | SaaS only |
Eidan is for: personal cognitive continuity, life orchestration, neurodivergent support, indie hacker autonomy.
OpenClaw is for: developers building agent systems (infrastructure-heavy).
n8n is for: workflow automation (deterministic, not cognitive).
Onyx is for: enterprise AI search (knowledge retrieval, not agentic).
Gas Town and Eidan get compared because both orchestrate AI agents and both think hard about persistence, but they sit in different categories.
| Gas Town | Eidan | |
|---|---|---|
| Unit of value | A fleet of coding agents | One personal agent |
| Domain | Coding only | Lifestyle / business / coding |
| Substrate | Git worktrees + Beads + DoltHub | Postgres (eidan.*) |
| Surface | Terminal + tmux | Web UI + backend service |
| Topology | Federated (Wasteland) | Single-operator, multi-instance |
| Mental model | Kubernetes for coding agents | Jarvis |
If your problem is "I have a team of coding agents β how do I keep them coordinated?", Gas Town is the right tool. If your problem is "I want one assistant who actually knows me across the parts of my life I care about," that's Eidan. The two coexist cleanly β Gas Town's coding swarm is upstream of Eidan's coding bundle, not a substitute for the host.
Eidan is the second iteration of SIELAY personal agent framework. It's still in active development. Expect breaking changes. Version migrations tools will be provided. Contributions are welcome.
- Core runtime (AGPL v3) β free, self-hosted, source open forever.
- Paid plugin sets β pre-packaged plugins available at eidan.dev.
- Commercial, serviced, hosted or custom β contact licence@eidan.dev.
Community plugins must be AGPL-compatible. See
LICENSE.md and CONTRIBUTING.md
for details.
Start here:
docs/ARCHITECTURE.mdβ system design, memory topology, agent lifecycle.docs/GLOSSARY.mdβ cross-spec term index, grouped by area + suggested reading order for newcomers.docs/LOCALHOST.mdβ full walkthrough for the dev-container and bare-metal paths.
Deploying & operating:
docs/DEPLOYMENT.mdβ single-host / multi-instance deploy notes and theEIDAN_AUTH_MASTER_KEY/ SMTP setup checklist.docs/018_DISTRIBUTION_AND_BUNDLES.mdβ how core + paid sibling bundles fit together.
Extending Eidan:
docs/001_PLUGINS.mdβ the plugin contract (manifest, lifecycle, MCP).docs/COMMUNITY_PLUGINS.mdβ AGPL implications + CLA for plugin authors.docs/025_AGENT_DB_INTROSPECTION.mdβ the whitelisted read surface the agent uses to introspect its own state.CONTRIBUTING.mdβ development workflow, contributor CLA.
The numbered docs/0NN_*.md files are the authoritative specs;
each opens with a Related: block that threads the graph.
- Issues β ideas, feedback, architecture debates, bug reports, feature requests
From Old English Δodan (to go, move forward). Eidan is your invisible orchestrator β anticipating needs, managing complexity, enabling continuity across life domains.
Like JARVIS, but open-source and yours to own.
SIELAY Ltd 2026
Built by @sielay and contributors.
