Installation
Usejarvis can run:
- In Docker (recommended)
- On your local machine via Bun
- On a home server
- On a VPS
Security First
Section titled “Security First”Usejarvis can control files, terminals, browsers, remote channels, and connected machines. Treat installation as a security decision, not just a package install.
Before exposing the dashboard outside localhost or giving Usejarvis access to real accounts, read:
The daemon is the brain. It does not need to live on the same machine that you want to control. If you want Usejarvis to stay online 24/7, a server or always-on machine is the best fit. If you want Usejarvis to control a machine’s desktop, browser, or filesystem, install a sidecar there after the daemon is up.
Since 0.9, access is JWT-only by default. There is no shared password. You enroll each device with jarvis enroll, which mints a token the sidecar uses to connect. See Quick Start for the full flow.
Recommended Install: Docker
Section titled “Recommended Install: Docker”Docker runs Usejarvis on any OS with a single command. No Bun or other dependencies required.
1. Install Docker Desktop
Section titled “1. Install Docker Desktop”Download Docker Desktop for Windows, macOS, or Linux if you do not have Docker yet.
2. Run the daemon
Section titled “2. Run the daemon”docker run -d --name jarvis \ -p 3142:3142 \ -v jarvis-data:/data \ ghcr.io/vierisid/jarvis:latestThe image is published to GHCR for amd64 and arm64. All daemon state lives in the jarvis-data volume, mounted at /data.
LLM providers, API keys, and model routing are configured from the settings dashboard after first boot. They are stored in the database and encrypted keychain, not in env vars or config.yaml. Non-LLM configuration can be provided via environment variables or by mounting a config.yaml into the /data volume.
Important limitation:
- The daemon inside Docker cannot access your host desktop, browser, clipboard, or native apps.
- To give Usejarvis desktop awareness and automation on a machine, install the sidecar on that machine. This is a required step, not an optional one. See Quick Start.
3. Enroll your first device
Section titled “3. Enroll your first device”Because the daemon runs inside a container, run the enroll command through docker exec:
docker exec jarvis jarvis enroll "my-desktop"This prints an enrollment token. You will paste it into the sidecar in the next step. Continue with Quick Start.
Other Installation Options
Section titled “Other Installation Options”Option 1: Bun Package
Section titled “Option 1: Bun Package”Use this if you want a native local install and already have Bun:
bun install -g @usejarvis/brainjarvis startThe first time you run jarvis start, the daemon boots in setup mode and the dashboard at http://localhost:3142 guides you through LLM provider, voice, and profile setup.
Option 2: One-Liner Installer
Section titled “Option 2: One-Liner Installer”Use this if you want the repository installed under ~/.jarvis/daemon automatically:
curl -fsSL https://raw.githubusercontent.com/vierisid/jarvis/main/install.sh -o /tmp/jarvis-install.shless /tmp/jarvis-install.shbash /tmp/jarvis-install.shjarvis startIf you want a more reproducible install, pin that URL to a specific release tag or commit instead of main.
Option 3: Manual Repository Install
Section titled “Option 3: Manual Repository Install”Use this if you want the full source checkout:
git clone https://github.com/vierisid/jarvis.git ~/.jarvis/daemoncd ~/.jarvis/daemonbun installbun run build:uibun linkjarvis startRequirements
Section titled “Requirements”Before installing, make sure you have:
- Docker, or Bun for a native install
- A supported OS: Linux, macOS, or Windows via Docker or WSL2 (the daemon does not run on native Windows; the sidecar does)
- An API key for at least one LLM provider (configured in the dashboard after first boot)
Optional but common:
- Ollama if you want local models
- Google OAuth credentials for Gmail or Calendar features
- Telegram or Discord bot credentials for remote messaging
- ElevenLabs credentials if you want premium TTS
Docker: Mounting a Real Config File
Section titled “Docker: Mounting a Real Config File”If you want repeatable management of non-LLM config, mount your own config.yaml into the container instead of relying only on environment variables.
Example pattern:
mkdir -p ~/.jarvis-dockercp ~/.jarvis/config.yaml ~/.jarvis-docker/config.yamlThen run:
docker run -d --name jarvis \ -p 3142:3142 \ -v ~/.jarvis-docker/config.yaml:/data/config.yaml \ -v jarvis-data:/data \ ghcr.io/vierisid/jarvis:latestRemember: LLM provider keys are managed in the dashboard, not in this file.
Docker: Networking Advice
Section titled “Docker: Networking Advice”When Usejarvis runs in Docker, localhost inside the container is the container itself.
That means:
ollama.base_url: http://localhost:11434only works if Ollama is inside the same network context the daemon can actually reach- the same warning applies to local Whisper endpoints and similar local services
If those services live somewhere else, point Usejarvis at:
- a reachable host IP
- a service/container hostname
- a reverse-proxied hostname
See Troubleshooting for the detailed explanation.
Choosing Where to Run the Daemon
Section titled “Choosing Where to Run the Daemon”Local Machine
Section titled “Local Machine”Best when:
- You are just getting started
- You want the simplest setup
- You mainly use one machine
Tradeoffs:
- Usejarvis only stays online while that machine is on
- If you want it to start automatically after reboot, configure Autostart
VPS or Home Server
Section titled “VPS or Home Server”Best when:
- You want Usejarvis available 24/7
- You want one daemon to coordinate multiple machines
- You care about uptime more than local-only simplicity
Tradeoffs:
- You need to set
daemon.brain_domainwith an explicit scheme (http://orhttps://) so sidecars dial the right endpoint - Desktop/browser control still happens through sidecars on the target machines
After Installation
Section titled “After Installation”The next steps are:
- Run Quick Start to enroll a device, connect the sidecar, and finish setup in the dashboard
- Configure Autostart if you run natively and want the daemon managed as a background service
- Install sidecars on any machines you want Usejarvis to control directly
Sidecar Reminder
Section titled “Sidecar Reminder”The daemon and the sidecar are different things:
- The daemon is the brain
- The sidecar is the machine-level actuator
If you run Usejarvis in Docker or on a VPS and want it to see and control your laptop, install a sidecar on the laptop. See Desktop Control.