Show HN: AgentArk – open-source self-hosted AI agent OS AgentArk, an open-source self-hosted AI agent operating system, launched in beta by developer @debankadas. The platform provides a secure runtime for building, deploying, and monitoring AI agents, featuring tools for context distillation, action monitoring, and self-evolution. It emphasizes data privacy by running entirely on the user's machine with AES-256-GCM encryption. Not an agent. An Ark for agents: build from prompts and tools, deploy as apps, automations, or watchers, distill noisy context, monitor every action, secure every boundary, self-evolve from your usage. Your AI. Your data. Your ark. A self-hosted runtime for the full agent lifecycle. Build agents from structured prompts, tools, and integrations. Deploy them as live apps, scheduled automations, conditional watchers, or chat sessions. Monitor every step through Sentinel with action traces, failure classification, and drift detection. Secure every capability boundary with intent classification, output guards, approval gates, and per-action authorization. Save context with ArkDistill: deterministic tool-output compaction before noisy browser pages, logs, traces, HTML, and integration dumps reach the model, often cutting noisy outputs by 60-90%. Self-evolve prompts, classifiers, routing policies, specialist behavior, and context-saving profiles from your own usage. Review your day, week, or month through Reflect: a local visual panorama of where chat, ArkOrbit, apps, goals, watchers, memory, background agents, usage, and learned workflows clustered. Chat, memory, devices, integrations, and reviewable actions, all in one place, all on your machine, private by default. ~3.1GB Docker image · ~500MB idle, ~1GB RAM steady-state under load 5 containers, embeddings loaded · AES-256-GCM encrypted · model-agnostic Install install · Features features · Ark Core ark-core-systems · Configuration configuration · Architecture architecture · Security security · API /agentark-ai/AgentArk/blob/main/API.md · Contributing /agentark-ai/AgentArk/blob/main/CONTRIBUTING.md · DeepWiki https://deepwiki.com/agentark-ai/AgentArk · Discord https://discord.gg/v32znQ6W Important AgentArk is in beta — not for production. It can make mistakes and overwrite files inside its workspace. The Docker boundary keeps it off your host filesystem, but anything you mount into the containers is in scope. Keep approvals on, back up data, verify results. Bugs and rough edges are expected. AgentArk is built and maintained by one person @debankadas https://github.com/debankadas in the open, so the surface area is large and fixes ship as they're found. Please open an issue https://github.com/agentark-ai/AgentArk/issues when something breaks — repros, logs, and screenshots help a lot. Every weekday at 9am, send me a daily brief with weather, calendar, urgent email, and overdue tasks. Remember that I prefer concise answers and daily updates in Telegram. Watch my inbox for urgent client messages and alert me if I do not reply. Draft a reply to this message and ask before sending it. Build me a landing page for my new project. Deploy it with a public URL. Search the web for recent papers on multi-agent architectures, summarize the top 3, and save them to my documents. Install the Linear integration and list my assigned issues. Connect my Google Calendar and remind me 10 minutes before every meeting. Set up a webhook that posts Stripe payment alerts to my Telegram. It does not stop at a reply. It can save the preference , schedule the follow-up , deliver the brief , draft the reply , watch for updates , connect an integration , or promote the work into a durable task and come back later. AgentArk is not an agent. It is an Ark for agents. The Ark is the security layer: the wrapper that contains, observes, and enforces what every agent inside it is allowed to do, and the audit surface where every action becomes reviewable. Agents are the things that run inside the Ark - chat handlers, deployed apps, scheduled automations, conditional watchers, specialist sub-agents dispatched by the router. The Ark is what makes any of them safe to point at your real data. Inside that boundary AgentArk also builds the agents you ask for, deploys them as apps with public URLs, automations, or watchers, monitors every step, distills noisy tool output before it expands the model context, and self-evolves prompts, policies, and context-saving profiles from your usage. Chat, memory, tasks, integrations, documents, companion devices, and audit trails live together in one private workspace on your machine. It can keep track of your preferences, deliver a daily brief, follow up across channels, schedule routines, monitor things in the background, build apps, and take action safely when you ask. It is built to evolve with you. Accepted work, user corrections, repeated routines, and live tool outcomes are reflected into local memory, prompts, routing, and strategy so the OS gets more aligned with your workflow instead of acting like every session is day one. - If you keep rewriting replies to be shorter, it learns to stay concise by default - If a certain tool path keeps succeeding for a task, it becomes more likely to choose that path again - If browser pages, logs, or traces keep wasting context, Evolve can improve ArkDistill profiles that shrink them while preserving required fields - If you correct how it briefs, routes, or follows up, future runs reflect that correction Your data stays with you. Your secrets are encrypted. You keep the final say on risky actions. Note: AgentArk currently runs as one global workspace. Project-specific workspaces and project-scoped UI/API behavior are intentionally deferred to phase 2. Command layer | Chat, plans, approvals, and direct work requests | Memory layer | Facts, preferences, user data, provenance, rollback, and checks | Automation layer | Tasks, watchers, routines, schedules, and follow-ups | Agent layer | Specialist agents, delegation, swarm work, and routing | App layer | Generated tools, reusable skills, and managed apps | Integration layer | Gmail, Calendar, Telegram, WhatsApp, Slack, webhooks, APIs, MCP servers, and custom packs | Device layer | Companion device pairing, scoped grants, and high-risk command approvals | Safety layer | Sandboxing, secrets, policy checks, action review, and trace history | Evolution layer | Memory, Reflect, Sentinel, Evolve, and Pulse working together | Lives where you do. Docker on your machine, period. Memory, secrets, integration tokens, conversation history, audit trails — all in local volumes, never in someone else's cloud. No managed backend you depend on, no account you have to keep, no telemetry you have to opt out of. You pay your model, not us. Point AgentArk at Ollama or any local model and every prompt after install is genuinely free — no rate limits, no surprise invoice. Bring your own Anthropic, OpenAI, Gemini, or Groq key and you pay the provider's published rate directly; AgentArk never proxies, intermediates, or marks up a single token. No subscription, no per-seat, no minimum. Bounded by design. Every action that touches the world goes through a permission gate. The agent runs inside a Docker boundary with an approval queue for anything not pre-authorized. Your host filesystem stays off-limits unless you explicitly mount what you want it to see. Adapts to you. Accepted work, your corrections, and live tool outcomes feed back into local memory, prompts, and routing. Over weeks of use the OS gets shaped by how you actually work — your follow-up style, your routing preferences, the tool paths that keep succeeding for your tasks — not by a generic mix of every other user. Open and inspectable. MIT and Apache 2.0. Read every line, fork it, run it. Audit trails on every action mean you can always see what the agent did, why, and when — across chat, automations, watchers, deployed apps, and integrations. macOS / Linux: curl -sSL https://raw.githubusercontent.com/agentark-ai/AgentArk/main/scripts/install.sh | bash Windows: irm https://raw.githubusercontent.com/agentark-ai/AgentArk/main/scripts/install.ps1 | iex The installer asks before installing Docker if Docker is missing, starts Docker Desktop when needed, downloads only the Compose/runtime helper files, pulls the published AgentArk image, and starts the stack. No Git clone is needed for normal use. Open http://localhost:8990 , pick your LLM provider in Settings, start chatting. Use Git only if you are building or coding AgentArk: git clone https://github.com/agentark-ai/AgentArk.git && cd AgentArk AGENTARK IMAGE=agentark:dev ./scripts/start.sh build On Windows source checkouts: git clone https://github.com/agentark-ai/AgentArk.git && cd AgentArk scripts\start.bat build Source builds do not pull the published AgentArk runtime image from GHCR. They still download Docker build base images and package dependencies needed to compile the local image. Use the Web UI.AgentArk is designed to run through the Docker Compose stack and Mission Control at http://localhost:8990 . The supported install path uses Docker Compose defaults plus named Docker volumes for runtime state and preserves those volumes across updates. AgentArk does not create or require a root project .env . Generated apps may have framework-owned env files inside their own app directories when required, but secret keys stay in AgentArk's managed secret storage or runtime injection path. Pulse creates framework-managed backups automatically. By default, AgentArk checks for a fresh managed backup every 14 days and only creates one when Sentinel sees the system as idle; if chats, app work, browser sessions, sandbox containers, or heavy background work are active, the backup is deferred and retried later. Backup work runs in background tasks and child processes, not on the main API request path. Backups are written under /app/data/backups as timestamped artifacts: agentark-managed- .dump - Postgres logical dump for conversations, messages, tasks, watchers, settings, memory/document indexes, traces, logs, and other DB-backed state. agentark-managed- .data.tar.gz - archive of /app/data , excluding the backup directory itself. agentark-managed- .config.tar.gz - archive of /app/config when that config volume is present. AgentArk creates the backup directory itself. If backup creation fails, Pulse raises a critical data-safety finding and notifies the user; users should not be asked to create the backup folder manually. For full install recovery, also keep an operator volume backup from ./scripts/start.sh backup or scripts\start.bat backup . The automatic managed backup intentionally does not copy the raw agentark-secrets volume into /app/data/backups ; that volume contains install-managed encryption material and should be exported only as part of an intentional, access-controlled backup. Low-memory systems 2-4 GB RAM : add the low-memory override to reduce Postgres and service footprint: docker compose -f docker-compose.yml -f docker-compose.lowmem.yml up -d The bundled Docker runtime includes Lightpanda for fast free-content fetching and the Evolve GEPA optimizer runtime with DSPy. GEPA uses the same active model configured in AgentArk's Models settings; there is no separate GEPA key, model, button, or .env setup. Evolve runs this optimizer automatically only after AgentArk is quiet, enough completed work exists, and the daily cost guardrail allows it. The UI surfaces this as Background improvement status, queue, evidence, and latest result. For operator inspection, GEPA reads recent evidence from experience runs . Its config, scheduler state, budget ledger, and latest result live in kv store under gepa optimizer config v1 , gepa optimizer auto state v1 , gepa optimizer budget ledger v1 , and gepa optimizer last result v1 . Queue/run artifacts are file-backed under /app/data/.agentark/self evolve/gepa/{pending,running,completed,failed,runs} in the agentark-data Docker volume. These numbers are for the supported Docker Compose install. They were measured from a local agentark:dev source build on April 18, 2026; exact values vary by platform, Docker cache state, enabled runtime features, model/provider choice, and active jobs. | Item | Current expectation | |---|---| | Full AgentArk Docker image | agentark:dev measured at 3.07 GB. Published full-runtime linux/amd64 images should be in the same range; run docker image ls agentark:dev or docker image ls ghcr.io/agentark-ai/agentark for the exact local size. | | Bundled Evolve GEPA runtime | Adds the small /app/bridges/gepa optimizer bridge plus a Python venv with DSPy and model-client dependencies. Expect roughly 120-250 MB additional uncompressed image size, varying with Python dependency versions. | | AgentArk process startup | 5-10 ms measured for the Rust binary command startup inside the rebuilt container. This excludes Docker Compose dependency ordering and Postgres health checks. | | Full local rebuild | About 12 minutes on the measured Docker Desktop build with warm dependency caches. The Rust release binary compile dominated the build at 11m 38s; frontend production build was about 11s. Clean Docker/Cargo/npm caches can be longer. | | Docker stack ready after image exists | 47.3 seconds measured from stopped containers to all services healthy with docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --wait on Docker Desktop using the local agentark:dev image. This includes Postgres, workspace, executor, control, dependency ordering, and healthcheck intervals. Clean pulls/builds are not included. | | Idle container memory after fresh start | About 0.5 GB across the default stack in a local fresh-start measurement. Browser sessions, generated apps, research, local embeddings, and active automations add to this. | | Low-memory mode | Use docker-compose.lowmem.yml on 2-4 GB systems. It caps Postgres at 512 MiB, control at 512 MiB, embeddings at 512 MiB, executor at 512 MiB, workspace at 256 MiB, and reduces Postgres buffers and DB pool sizes. | AgentArk can use a self-hosted SearXNG instance for web search and deep research. AgentArk calls /search?format=json , so the SearXNG instance must allow JSON output. Start one locally in a single command: mkdir -p .agentark-searxng && printf 'use default settings: true\nserver:\n secret key: "agentark-local-searxng"\n limiter: false\nsearch:\n formats:\n - html\n - json\n' .agentark-searxng/settings.yml && docker run -d --name agentark-searxng --restart unless-stopped -p 8080:8080 -v "$PWD/.agentark-searxng/settings.yml:/etc/searxng/settings.yml:ro" searxng/searxng:latest Then open AgentArk Settings - Search and set SearXNG Base URL self-hosted to: http://host.docker.internal:8080 if AgentArk is running in Docker Desktop http://localhost:8080 if AgentArk is running directly on the host http://