Skip to content
ChannelDesk
Self-hosting

Your box. Your keys. No SaaS.

ChannelDesk is designed for homelabbers. Ships as a Docker Compose stack for the quickest start, or a reference Kustomize bundle if you're on Kubernetes (Helm chart in progress). Everything stays local.

/cluster · what you see after `docker compose up`
ChannelDesk Cluster page after install — k3s node cards with live CPU/Mem and Wake/Shutdown controls

Minimum specs

  • 2 vCPU, 4 GB RAM
  • 10 GB disk (Postgres + logs)
  • Linux / macOS / Windows (via container)

Prereqs

  • Docker 24+ or k8s 1.27+
  • An Anthropic API key
  • A reachable domain (for inbound webhooks)

Data lives in

  • Postgres volume (entities, flows, settings)
  • Redis (queues, ephemeral)
  • Session logs on disk

Docker Compose (quickest)

terminal
$ git clone https://github.com/channeldesk/channeldesk.git
$ cd channeldesk
$ cp .env.example .env
$ nano .env     # paste your ANTHROPIC_API_KEY
$ docker compose -f docker-compose.yml up -d
# brings up postgres + redis + orchestrator + dashboard
# → open http://localhost:4200

Kubernetes / k3s

The reference deployment lives in channeldesk/infra — Kustomize manifests under apps/channeldesk/ that Flux CD reconciles into a homelab k3s. Copy the folder, point at your own image, and you have a GitOps deploy. A first-class Helm chart is on the roadmap.

terminal
$ kubectl create namespace channeldesk
$ kubectl -n channeldesk create secret generic channeldesk-secrets \
    --from-literal=ANTHROPIC_API_KEY=sk-ant-...
$ kubectl apply -k https://github.com/channeldesk/infra.git/apps/channeldesk
# or vendor the kustomize folder into your own GitOps repo and let Flux/Argo reconcile it.
After install

Add hosts. Test integrations. Done.

Settings is where you enroll SSH hosts (it generates the public key for you), test integrations end-to-end, and scope each one to a cluster — or lift it to shared with one toggle.

/settings
ChannelDesk Settings — allowed users with roles, SSH host enrollment with public key, and per-cluster integration table for UniFi, Philips Hue and Energy

One caveat: Claude CLI login

If you're using the Claude CLI (rather than API key) for session spawning, Anthropic currently requires a manual SSH + claude login refresh roughly every 3 days. ChannelDesk surfaces this clearly in the settings UI — and can send you a channel reminder before the session expires.

You can be live in 10 minutes

The install script is idempotent. Run it again to upgrade; your data stays put.