Hedy is a private-deployment AI employee. It runs where you run — a VM with Docker Compose for a pilot, Helm on Kubernetes for high availability, or fully air-gapped with local models. A pilot is up in about 30 minutes. Nothing here is a cloud sign-up; the whole stack lands inside your boundary.
| Best for | How | HA | |
|---|---|---|---|
| Docker Compose | Pilot / single team | docker compose up -d on one VM | Single node |
| Kubernetes (Helm) | Production / scale | Helm chart into your cluster | Multi-replica, StatefulSet |
| Air-gapped | No-internet networks | Compose/Helm + local vLLM or Ollama; offline Ed25519 licence | Either |
| Managed gateway | Zero model config | Route model calls to Hedy's gateway; everything else stays yours | Either |
Self-hosted / BYO is the flagship — your keys, your models, zero sub-processors. Managed trades that for zero-config speed and changes the data-residency facts; see the security model.
A Linux VM in your VPC (a pilot is comfortable on ~2 vCPU / 8 GB; size up for heavier retrieval). Docker + Compose, or a Kubernetes cluster for Helm.
A Feishu or Lark app (first-class), or Slack. This is where the employee lives and answers.
Your own API keys — Anthropic- or OpenAI-compatible, or Chinese providers such as DeepSeek, Qwen, Kimi and GLM — or a local vLLM / Ollama endpoint for air-gapped. Or run Managed and skip this.
Point Hedy at a wiki, Git, Notion or Confluence. Optional on day one; retrieval falls back to full-text until embeddings are configured.
Verified offline — no phone-home. Drop it in before first start (air-gap friendly).
Pull the pinned semver images (never latest) and place your licence.json. Repository ships only an .env.example — secrets are injected, never committed.
.envSet your channel credentials, model keys (or point at local vLLM/Ollama), and a strong internal token. Bind published ports to 127.0.0.1 behind your reverse proxy.
docker compose up -dPostgres, Redis, the control plane, the LLM gateway and the agent come up. Health checks gate readiness.
Add the app to your Feishu/Lark or Slack workspace; the employee introduces itself and runs a self-check.
Add a source, ask a question — the answer comes back cited, scoped to what the asker may see. First deliverable in minutes.
Published ports bind to 127.0.0.1; your reverse proxy terminates TLS. Docker port publishing bypasses host firewalls — loopback binding is the reliable boundary.
Credentials enter through deployment-environment injection. The repository ships an example file; the agent is hard-ruled never to store credential values in memory, files or logs.
Every model call routes through a single gateway that owns quota, cost accounting and degrade policy — so spend is measurable per team and project, and nothing bypasses it.
Every action is recorded with actor, object and reasoning — no update or delete path, for the agent or for admins.
Images are pinned semver. Learned knowledge and the employee's memory live in preserved, backup-able volumes — an upgrade never resets what the employee has learned.
Ship with backup/restore/upgrade runbooks; your data is your Postgres, on your host.
Ed25519 state machine: active → grace (read-only) → expired. Verified locally, no external call — air-gap ready.
.env, docker compose up -d, connect a channel, point at one knowledge source. Production Helm deployments take longer to wire into your cluster and IdP..env.example with no real values; the agent is hard-ruled never to write credential values into memory, files or logs, and model keys are used only server-side behind the gateway.