Skip to main content
This guide walks you through installing Comis on a Linux server or workstation. Every command is copy-paste ready, and each step shows the expected output so you know things are working.
You don’t need to understand the technical details to use this feature. The configuration examples below are copy-paste ready.
Make sure you have Node.js 22+, build tools, and an AI provider API key ready before starting. See the Requirements page for the full list.

Installation

1

Install Node.js 22

Verify the installation:
Expected output:
2

Install build tools

These tools compile native modules during the Comis installation.
3

Install Comis

Verify:
Expected output (version number — yours may differ):
If you get an EACCES permission error, see the “Permission denied during npm install” section in Common Issues below.
4

Run the setup wizard

The wizard walks you through three questions:
  1. Which AI provider? — Choose from Anthropic (Claude), OpenAI (GPT), Google (Gemini), and 8 others. Pick whichever provider you have an API key for.
  2. Your API key — Paste the API key from your chosen provider. The wizard stores it securely in ~/.comis/.env and never displays it again.
  3. A name for your agent — Give your agent a name (like “Atlas” or “Helper”), or press Enter to accept the default.
When the wizard finishes, it creates two files:
  • ~/.comis/config.yaml — Your agent’s configuration (name, provider, model, gateway settings)
  • ~/.comis/.env — Your API key, stored separately for security
5

Start the daemon

You should see output similar to:
The daemon runs in the background. It manages your agents, handles incoming messages, and serves the web dashboard.
You can close this terminal and the daemon will keep running. To stop it later, run comis daemon stop.
6

Open the web dashboard

Open your browser and go to:
The web dashboard provides a chat interface where you can talk directly to your agent. It also shows your agent’s status, memory usage, and configuration. Type a message and press Enter to start a conversation.

Browser tool provisioning

The agent browser tool ships enabled by default, so the installer provisions its runtime by default too: stock Chrome + headless shared libs, plus Xvfb + a headed companion unit. Provisioning is strictly best-effort — if Chromium or Xvfb can’t install on this host (arm64, locked-down apt, rootless), the install never aborts; the browser tool simply falls back to what’s available (see the fallback note below). Opt out for a minimal footprint, or add the stealth variant, with these flags:
Headed provisioning degrades gracefully to headless. Chromium always installs before Xvfb, and the headed decision keys off ground truth — whether the Xvfb binary is actually present — not the flag. So if the Xvfb package or its companion unit can’t install (e.g. a rootless install can’t register a system unit), the installer downshifts to headless: it skips the companion unit and seeds headless: true, and the browser tool works on the installed Chromium. You never end up configured headed against a display that isn’t there.
Run as a regular user, these one-liners ask to re-run themselves with sudo and install under a dedicated comis system user — the secure default on Linux. Pass --no-user (or set COMIS_NO_USER=1) for a current-user install; non-interactive runs without root require one of the two choices explicitly.
Datacenter IPs (AWS, DigitalOcean, Hetzner, Hostinger, …) are pre-blocked by Reddit, X/Twitter, LinkedIn, and many anti-bot services at the network layer — regardless of browser fingerprint. CloakBrowser does not include a proxy. If your daemon runs on a datacenter VPS, pair the stealth flag with a residential proxy. Self-hosted on a home/office network: stealth alone usually works.CloakBrowser’s compiled binary is under a separate license — free for self-hosted use; bundling into a service distributed to third-party customers requires an OEM license from CloakHQ. See the binary license.
The corresponding environment variables work too, useful in CI / non-interactive flows: COMIS_WITH_BROWSER=0|1 and COMIS_WITH_XVFB=0|1 (both default 1 — set 0 for the opt-outs above), and COMIS_WITH_CLOAKBROWSER=1. The installer pre-creates browser profile dirs, seeds a browser: block in config.yaml, and (when Xvfb installed) enables + starts the companion unit before the main daemon — no manual systemd surgery needed.

Non-Interactive Install

For CI pipelines, scripting, or Docker containers, you can skip the interactive wizard entirely:
This creates the same ~/.comis/config.yaml and ~/.comis/.env files without prompting for input. Replace anthropic with your provider of choice and set the ANTHROPIC_API_KEY environment variable (or substitute the appropriate variable for your provider) before running.
The --accept-risk flag acknowledges that you are providing an API key on the command line rather than through the interactive prompt. See comis init --help for all 27 available flags.
OpenAI Codex on a headless server? If you are setting up on an SSH-only Linux server and pick openai-codex as your provider, the wizard auto-selects Device code login (no browser needed). You can also run it manually at any time:
The CLI prints a short code and the URL https://auth.openai.com/codex/device. Open that URL on a phone or laptop browser, sign into ChatGPT, and enter the code. The CLI polls every 5 seconds and completes when the code is accepted (15-minute timeout). For the full walkthrough including multi-account profiles, see Install on a VPS.

Common Issues

Symptom: EACCES: permission denied when running npm install -g comisaiFix: Configure npm to use a directory you own instead of the system-level global directory:
Then retry the install:
Symptom: Errors mentioning node-gyp, gyp ERR!, or make: g++: not found during installation.Cause: Missing build tools required for compiling native modules.Fix: Install the build tools for your distribution (Step 2 above), then retry:
If the problem persists, check that Python 3 is installed and accessible as python3. See the Requirements page for the full list of build dependencies.
Symptom: The daemon starts but reports that port 4766 is already in use.Diagnose: Find what is using the port:
Fix: Either stop the other process, or change the Comis gateway port in ~/.comis/config.yaml:
Then restart the daemon:
Symptom: comis daemon start succeeds but http://localhost:4766 does not load in your browser.Diagnose: Run the built-in diagnostic tool:
This checks five categories: config, daemon, gateway, channels, and workspace. Look for failures in the “gateway” category.Common causes:
  • The gateway is disabled in your config. Make sure gateway.enabled is not set to false.
  • The gateway is bound to a different host. Check the gateway.host setting in your config file.
  • A firewall is blocking the port.

Next Steps

Configuration Guide

Customize your agent’s settings, add channels, and fine-tune behavior.

Verification

Run diagnostic checks to confirm everything is working.

Connect a Channel

Add Discord, Telegram, Slack, or any of the 11 supported platforms.