mirror of
https://github.com/multica-ai/multica.git
synced 2026-07-16 14:49:09 +02:00
* docs: add Pi and Gemini runtimes to supported-agent references CLI_AND_DAEMON.md, SELF_HOSTING.md, and SELF_HOSTING_ADVANCED.md listed claude/codex/opencode/openclaw/hermes as supported runtimes in their agent tables and env-var overrides but omitted the pi and gemini entries that the daemon already registers (server/internal/daemon/config.go). * docs(readme): list all supported runtimes (add Hermes, Gemini, Pi) * docs: add Cursor runtime, fix Pi URL, clarify daemon ASCII diagram - Add Cursor Agent (cursor-agent CLI, MULTICA_CURSOR_PATH/MODEL) to the supported-runtime tables, env-var lists, and prose across README, CLI_AND_DAEMON, CLI_INSTALL, SELF_HOSTING, and SELF_HOSTING_ADVANCED. - Fix Pi's canonical URL from github.com/paperclipai/paperclip to https://pi.dev/. - Rework the Agent Daemon box in both READMEs so provider names live in an annotation outside the box instead of being wrapped mid-word (`OpenClaw/Code`), which read as a phantom "Code" runtime.
216 lines
6.1 KiB
Markdown
216 lines
6.1 KiB
Markdown
# Self-Hosting Guide
|
|
|
|
Deploy Multica on your own infrastructure in minutes.
|
|
|
|
## Architecture
|
|
|
|
| Component | Description | Technology |
|
|
|-----------|-------------|------------|
|
|
| **Backend** | REST API + WebSocket server | Go (single binary) |
|
|
| **Frontend** | Web application | Next.js 16 |
|
|
| **Database** | Primary data store | PostgreSQL 17 with pgvector |
|
|
|
|
Each user who runs AI agents locally also installs the **`multica` CLI** and runs the **agent daemon** on their own machine.
|
|
|
|
## Quick Install (Recommended)
|
|
|
|
Two commands to set up everything — server, CLI, and configuration:
|
|
|
|
```bash
|
|
# 1. Install CLI + provision the self-host server
|
|
curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash -s -- --with-server
|
|
|
|
# 2. Configure CLI, authenticate, and start the daemon
|
|
multica setup self-host
|
|
```
|
|
|
|
This clones the repository, starts all services via Docker Compose, installs the `multica` CLI, then configures it for localhost.
|
|
|
|
Open http://localhost:3000, log in with any email + verification code **`888888`**.
|
|
|
|
> **Prerequisites:** Docker and Docker Compose must be installed. The script checks for this and provides install links if missing.
|
|
>
|
|
> **CLI only?** If the self-host server is already running and you only need the CLI on a macOS/Linux machine, install it with Homebrew:
|
|
>
|
|
> ```bash
|
|
> brew install multica-ai/tap/multica
|
|
> ```
|
|
|
|
---
|
|
|
|
## Step-by-Step Setup (Alternative)
|
|
|
|
If you prefer to run each step manually:
|
|
|
|
### Step 1 — Start the Server
|
|
|
|
**Prerequisites:** Docker and Docker Compose.
|
|
|
|
```bash
|
|
git clone https://github.com/multica-ai/multica.git
|
|
cd multica
|
|
make selfhost
|
|
```
|
|
|
|
`make selfhost` automatically creates `.env` from the example, generates a random `JWT_SECRET`, and starts all services via Docker Compose.
|
|
|
|
Once ready:
|
|
|
|
- **Frontend:** http://localhost:3000
|
|
- **Backend API:** http://localhost:8080
|
|
|
|
> **Note:** If you prefer to run the Docker Compose steps manually, see [Manual Docker Compose Setup](#manual-docker-compose-setup) below.
|
|
|
|
### Step 2 — Log In
|
|
|
|
Open http://localhost:3000 in your browser. Enter any email address and use verification code **`888888`** to log in.
|
|
|
|
> This master code works in all non-production environments (i.e. when `APP_ENV` is not set to `production`). For production, configure an email provider — see [Advanced Configuration](SELF_HOSTING_ADVANCED.md#email-required-for-authentication).
|
|
|
|
### Step 3 — Install CLI & Start Daemon
|
|
|
|
The daemon runs on your local machine (not inside Docker). It detects installed AI agent CLIs, registers them with the server, and executes tasks when agents are assigned work.
|
|
|
|
Each team member who wants to run AI agents locally needs to:
|
|
|
|
### a) Install the CLI and an AI agent
|
|
|
|
```bash
|
|
brew install multica-ai/tap/multica
|
|
```
|
|
|
|
You also need at least one AI agent CLI installed:
|
|
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (`claude` on PATH)
|
|
- [Codex](https://github.com/openai/codex) (`codex` on PATH)
|
|
- [OpenClaw](https://github.com/openclaw/openclaw) (`openclaw` on PATH)
|
|
- [OpenCode](https://github.com/anomalyco/opencode) (`opencode` on PATH)
|
|
- [Hermes](https://github.com/NousResearch/hermes) (`hermes` on PATH)
|
|
- Gemini (`gemini` on PATH)
|
|
- [Pi](https://pi.dev/) (`pi` on PATH)
|
|
- [Cursor Agent](https://cursor.com/) (`cursor-agent` on PATH)
|
|
|
|
### b) One-command setup
|
|
|
|
```bash
|
|
multica setup self-host
|
|
```
|
|
|
|
This automatically:
|
|
1. Configures the CLI to connect to `localhost` (ports 8080/3000)
|
|
2. Opens your browser for authentication
|
|
3. Discovers your workspaces
|
|
4. Starts the daemon in the background
|
|
|
|
For on-premise deployments with custom domains:
|
|
|
|
```bash
|
|
multica setup self-host --server-url https://api.example.com --app-url https://app.example.com
|
|
```
|
|
|
|
To verify the daemon is running:
|
|
|
|
```bash
|
|
multica daemon status
|
|
```
|
|
|
|
> **Alternative:** If you prefer manual steps, see [Manual CLI Configuration](#manual-cli-configuration) below.
|
|
|
|
### Step 4 — Verify & Start Using
|
|
|
|
1. Open your workspace in the web app at http://localhost:3000
|
|
2. Navigate to **Settings → Runtimes** — you should see your machine listed
|
|
3. Go to **Settings → Agents** and create a new agent
|
|
4. Create an issue and assign it to your agent — it will pick up the task automatically
|
|
|
|
## Stopping Services
|
|
|
|
If you installed via the install script:
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash -s -- --stop
|
|
```
|
|
|
|
If you cloned the repo manually:
|
|
|
|
```bash
|
|
# Stop the Docker Compose services (backend, frontend, database)
|
|
make selfhost-stop
|
|
|
|
# Stop the local daemon
|
|
multica daemon stop
|
|
```
|
|
|
|
## Switching to Multica Cloud
|
|
|
|
If you've been self-hosting and want to switch your CLI to [Multica Cloud](https://multica.ai):
|
|
|
|
```bash
|
|
multica setup
|
|
```
|
|
|
|
This reconfigures the CLI for multica.ai, re-authenticates, and restarts the daemon. You will be prompted before overwriting the existing configuration.
|
|
|
|
> Your local Docker services are unaffected. Stop them separately if you no longer need them.
|
|
|
|
## Rebuilding After Updates
|
|
|
|
```bash
|
|
git pull
|
|
make selfhost
|
|
```
|
|
|
|
Migrations run automatically on backend startup.
|
|
|
|
---
|
|
|
|
## Manual Docker Compose Setup
|
|
|
|
If you prefer running Docker Compose steps manually instead of `make selfhost`:
|
|
|
|
```bash
|
|
git clone https://github.com/multica-ai/multica.git
|
|
cd multica
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edit `.env` — at minimum, change `JWT_SECRET`:
|
|
|
|
```bash
|
|
JWT_SECRET=$(openssl rand -hex 32)
|
|
```
|
|
|
|
Then start everything:
|
|
|
|
```bash
|
|
docker compose -f docker-compose.selfhost.yml up -d
|
|
```
|
|
|
|
## Manual CLI Configuration
|
|
|
|
If you prefer configuring the CLI step by step instead of `multica setup`:
|
|
|
|
```bash
|
|
# Point CLI to your local server
|
|
multica config set server_url http://localhost:8080
|
|
multica config set app_url http://localhost:3000
|
|
|
|
# Login (opens browser)
|
|
multica login
|
|
|
|
# Start the daemon
|
|
multica daemon start
|
|
```
|
|
|
|
For production deployments with TLS:
|
|
|
|
```bash
|
|
multica config set app_url https://app.example.com
|
|
multica config set server_url https://api.example.com
|
|
multica login
|
|
multica daemon start
|
|
```
|
|
|
|
## Advanced Configuration
|
|
|
|
For environment variables, manual setup (without Docker), reverse proxy configuration, database setup, and more, see the [Advanced Configuration Guide](SELF_HOSTING_ADVANCED.md).
|