After building the CLI from the sulala package:
cd sulala
bun run build
sulala onboard # first time only
sulala start --daemon
This starts the server in the background and writes the PID to ~/.agent-os/sulala.pid. Use sulala stop to stop it.
bun run dev
# or
sulala start
Runs the server in the foreground. Use a process manager (systemd, launchd, Docker) if you need restarts and logging.
AGENT_OS_HOME (default ~/.agent-os): config.json, SQLite DB, agents, skills, configs, graphs, workspaces.AGENT_MEMORY_DB_PATH (default ~/.agent-os/database.db). Back up this file for persistence. Ensure the process has read/write access.~/.agent-os/config.json or via env vars. Never commit config or .env with real keys.PORT (default 3010) and HOST (default 127.0.0.1). Bind to 0.0.0.0 only if you need remote access and have secured the server (e.g. reverse proxy + auth)./ and /api (and /api/events for WebSocket) to http://127.0.0.1:3010. Set the channel webhook URLs to the public HTTPS base (e.g. https://your-domain.com/api/channels/telegram/webhook).{ ok: true, service: "agent-os" }. Use it for liveness/readiness if needed.If you add a Dockerfile:
dist/index.js).AGENT_OS_HOME to a path inside the container (e.g. /data) and mount a volume there so config and DB persist.PORT to match the exposed port. Expose 3010 (or your choice).