Quick Start
This guide assumes you have Docker Desktop installed. If you prefer a native Bun install or a source checkout, see Installation, then continue from Step 2.
Step 1: Run the Daemon
Section titled “Step 1: Run the Daemon”docker run -d --name jarvis \ -p 3142:3142 \ -v jarvis-data:/data \ ghcr.io/vierisid/jarvis:latestThe daemon boots and listens on port 3142. All state lives in the jarvis-data volume.
Step 2: Enroll This Machine
Section titled “Step 2: Enroll This Machine”Since 0.9, access is JWT-only by default. You enroll each device from the machine running the brain:
docker exec jarvis jarvis enroll "my-desktop"On a native install, run it directly:
jarvis enroll "my-desktop"This mints a long-lived enrollment token and prints it. Keep the terminal open; you paste this token into the sidecar in Step 4.
Enrolling an existing name re-mints its token. Add --rotate to also invalidate all previously issued tokens for that device.
Step 3: Install and Run the Sidecar
Section titled “Step 3: Install and Run the Sidecar”Install the sidecar on the machine you want Usejarvis to see and control:
bun install -g @usejarvis/sidecarOr download the prebuilt binary for your platform (macOS, Linux, Windows) from the releases page and extract it.
Then run it:
jarvisThe sidecar is the machine-level actuator: desktop automation, browser automation, terminal, filesystem, clipboard, and screenshots. Even a single-machine setup needs it, because the Docker container cannot reach your host desktop.
Step 4: Paste the Enrollment Token
Section titled “Step 4: Paste the Enrollment Token”On first run, the sidecar opens a connect window. If you are self-hosting, click Paste your enrollment token, paste the token from Step 2, and connect. You can also pass it on the command line:
jarvis --token <your-token>The token is stored locally at ~/.jarvis/sidecar.yaml, so subsequent runs reconnect automatically.
Step 5: Finish Setup in the Dashboard
Section titled “Step 5: Finish Setup in the Dashboard”Once the sidecar connects, open the dashboard:
http://localhost:3142On first boot, the dashboard guides you through:
- Primary LLM provider and API key
- Voice (TTS) choice
- A conversational profile interview
- A short tour
LLM providers and API keys are stored in the database and encrypted keychain, not in config.yaml.
The dashboard is the main control plane for:
- Chat
- Tasks
- Memory
- Authority
- Awareness
- Workflows
- Goals
- Settings
Step 6: Send a First Real Task
Section titled “Step 6: Send a First Real Task”Good first prompts are tasks that exercise the system, not toy questions. For example:
- “Summarize what this project actually does.”
- “Open the docs and tell me what is missing.”
- “Create a workflow that posts a Telegram summary every morning.”
- “Plan my day from my current goals.”
Add More Reach With Sidecars
Section titled “Add More Reach With Sidecars”The daemon does not need to live on the machines it controls. Repeat Steps 2 to 4 for every additional machine: enroll a new device name on the brain, install the sidecar on the target machine, paste that device’s token. See Desktop Control for the full setup.
Managing Enrolled Devices
Section titled “Managing Enrolled Devices”jarvis sidecars list # list enrolled devicesjarvis revoke <sid> # revoke a devicejarvis enroll "name" --rotate # re-enroll and invalidate old tokensOn Docker, prefix each command with docker exec jarvis.
Common First Tasks After Setup
Section titled “Common First Tasks After Setup”Most people should do these next:
- Review Authority & Safety before raising autonomy
- Connect a sidecar on every machine you want real desktop/browser control on
- Set
daemon.brain_domainbefore exposing the daemon beyond localhost
Quick Verification Checklist
Section titled “Quick Verification Checklist”You are in a good state if all of these are true:
- The daemon container is running (
docker ps), orjarvis statusshows it running on a native install - The sidecar shows as connected
- The dashboard connects successfully
- Chat messages stream normally
- Your selected LLM provider responds
If any of that fails, go to Troubleshooting.