SynapSynapDocs

Eve

Install and operate a self-hosted server stack around a Synap pod with the eve command-line tool.

For Self-hostersEveOpen-source podbetaReviewed 2026-10-20

Eve is an operator command-line tool (eve) that installs and manages a self-hosted server stack: a Synap pod, plus optional services next to it such as a local model runner, agents, feeds and a chat interface, all behind one Traefik reverse proxy. It also runs a web dashboard for the stack. Eve is open source, in the hestia-cli repository.

Eve does not replace the pod's own tooling: it installs and updates the pod through the same synap server CLI described in Run. If you only want a pod, the self-host quickstart is simpler.

Install Eve

On a fresh Debian or Ubuntu server, as root:

apt-get update -y && apt-get install -y ca-certificates curl git
curl -fsSL https://raw.githubusercontent.com/Synap-core/hestia-cli/main/bootstrap.sh | bash -s -- --no-setup

bootstrap.sh installs Docker, Node.js 20 and pnpm 10 when they are missing, clones Eve into /opt/eve (--dir chooses another directory), builds it and links the eve command into /usr/local/bin. Without --no-setup it then starts the older eve setup wizard, which needs an interactive terminal.

Install the stack

eve install                                              # interactive: pick a preset or components
eve install --components traefik,synap --domain example.com --email you@example.com
eve install --dry-run --components traefik,synap         # print the plan only

Traefik and the Eve dashboard are always installed. A few of the components you can add (eve add <id>) or remove (eve remove <id>) later:

IDWhat it is
synapThe Synap pod
ollamaLocal model runner
hermes, openclawAgents that work through the pod (Hermes is the one suggested for new installs)
rsshubTurns websites into feeds
openwebuiA chat interface

eve add without an argument lists what can be added. The full list is in the repository.

Everyday commands

TaskCommand
What is installed and runningeve status (--watch, --json)
Diagnose problemseve doctor
Update every component, or someeve update, eve update synap
Update the pod to a release or channeleve update synap --release stable (or fast, or a release ID)
Restart componentseve restart, eve restart synap
Logs of the Eve stackeve logs [service] -f, from the Compose directory (or with --compose-file)
Open the dashboardeve ui (port 7979 by default)
Serve the stack on your domaineve domain set example.com --ssl --email you@example.com, then eve domain show
Agent keys for the podeve auth status, eve auth provision, eve auth renew --agent <slug>

eve update synap runs the pod's own synap update, so the same backup, canary and automatic rollback apply. See Upgrades.

Where things live

PathWhat it is
/opt/eveEve itself (the default of bootstrap.sh)
.eve/ in Eve's directoryEve's secrets and setup choices
~/.local/share/eve/state.jsonWhich components are installed (EVE_STATE_HOME moves it)
/opt/synap-backendThe pod, when Eve installed it: a checkout of the backend repository (SYNAP_REPO_ROOT moves it)
/opt/synap-backend/deployThe pod's deploy directory

Run synap commands for an Eve-installed pod from /opt/synap-backend/deploy (or pass SYNAP_DEPLOY_DIR to it on the sudo command: sudo SYNAP_DEPLOY_DIR=/opt/synap-backend/deploy synap …), not from /opt/synap/deploy as on a pod installed with install.sh. Run docker compose for the pod from that directory too; from Eve's directory you reach a different Compose project.

What changes on an Eve-managed pod

  • The pod's host name is pod.<domain>. For the domain you give Eve, it installs the pod with --domain pod.<domain>, so the admin console is pod-admin.<domain>.
  • The edge is Traefik, not Caddy. Eve runs synap with SYNAP_SKIP_EDGE=1, and the first install or update pins SYNAP_EDGE=traefik in deploy/.env, the same setting synap install --edge traefik writes. Caddy cannot bind port 80 next to Traefik, so a pod with Eve's override and no pinned edge is refused by synap update until you run synap config set SYNAP_EDGE=traefik.
  • A compose override marks it. Eve writes a docker-compose.override.yml carrying an eve-managed marker in the deploy directory. It attaches the pod's services to Eve's Docker network so Traefik can reach them. synap doctor reports it.
  • Each agent has its own key. Eve gives every agent it manages its own Hub API key and pod user, minted through the pod's /api/hub/setup/agent. eve auth status lists them.
  • AI providers. Changing the AI providers a pod uses needs the providers.write key scope, which is intended for an operator tool such as Eve and is not part of an ordinary agent key.

For everything else, the Run section applies to an Eve-managed pod as it does to any other.

On this page