Your agent, in the cloud. A web app (PWA, no install) that runs an AI agent with a real shell, files, browsing, and connectors — 24/7, on its own cloud machine. Open it from any device; close your laptop and the task keeps running. Open source, bring your own keys.
- 🔌 Engine-agnostic — Claude Agent SDK (your Anthropic API key), open models via Fireworks/OpenRouter/Ollama, or Eigent's multi-agent workforce
- ⚡ Scheduled triggers — "every morning at 8, brief me" actually runs
- 🌐 Real browsing — headless Chrome via Playwright MCP
- 🧩 MCP connectors — attach Composio/Klavis/Zapier MCP or any endpoint
- 🔑 BYO everything — paste a key, pick a model; keys never leave your box
| Scheduled triggers with run history | Engines, connectors & BYO models |
|---|---|
![]() |
![]() |
phone / laptop browser
→ PWA + control plane (web/, control-plane/ — zero-dep Node)
→ agent engine (per user, sandboxed)
eigent — multi-agent + browser automation [primary]
opencode — lightweight coding agent [fallback]
→ LiteLLM proxy (litellm/ — Fireworks default, BYO keys)
→ MCP connectors (Composio/Pipedream to start)
- Control plane: sessions + SSE streaming proxy, pluggable engines
- PWA UI: chat with history sidebar, markdown rendering, scheduled-tasks panel, installable, dark/light
- OpenCode engine — live-tested with Kimi K2.6 on Fireworks (real tool use, streaming)
- Claude Agent SDK engine (
engine-claude/) — live-tested; runs on the user's own Anthropic API key (the sanctioned third-party path) - Bearer-token auth (
KROWOC_AUTH_TOKEN) — required for public deploys - Scheduled tasks: daily/interval prompts fire in fresh agent sessions
- Eigent engine adapter + browsing Dockerfile (written; container untested)
- Cloud deploy (single box via docker-compose, then Fly Machines per user)
- Supabase auth (multi-user), connectors panel (Composio MCP), web push
One command sequence gets you a personal cloud agent with HTTPS, phone PWA, browsing, and 24/7 scheduled tasks — no Docker needed locally. → docs/deploy-fly.md
# 1. engine
npm i opencode-ai && npx opencode serve --port 4096
# give it a provider config: see agent/opencode.json (uses LITELLM_URL)
# 2. models — either run LiteLLM (needs FIREWORKS_API_KEY):
pip install 'litellm[proxy]' && litellm --config litellm/config.yaml --port 4000
# ...or any OpenAI-compatible endpoint
# 3. control plane + web UI
node control-plane/src/server.js # http://localhost:8080cp .env.example .env # fill in FIREWORKS_API_KEY + LITELLM_MASTER_KEY
docker compose up --build # OpenCode engine
# or the primary engine (heavy image, includes Chromium for browsing):
git clone --depth 1 https://github.com/eigent-ai/eigent vendor/eigent
ENGINE=eigent ENGINE_URL=http://agent-eigent:5001 \
docker compose --profile eigent up --buildCaddy terminates TLS on $DOMAIN and proxies to the control plane.
- Per-user isolation = Fly Machines (microVM + persistent volume,
scale-to-zero; idle user ≈ $0.50/mo, active ≈ $1–3/mo). Template in
infra/fly/. Migration path to self-hosted Firecracker at scale. - Engine keys never leave the platform: the Eigent adapter injects the LiteLLM route per request; engine containers hold no provider keys.
See docs/architecture.md for the full engine evaluation and roadmap, and
SECURITY.md for credential handling and deployment hardening.
- Discord — help, ideas, show-and-tell
- Contributions welcome — see CONTRIBUTING.md
Apache 2.0 (see LICENSE). The Krowoc name and logo are not covered by the
code license. This public repo is the complete single-tenant product; the
hosted multi-tenant cloud (accounts, provisioning, billing) is a separate
closed layer built on top of it.


