Jiayuan Zhang a67e533742 feat(agents): add per-agent model field with provider-aware dropdown
Adds a first-class `model` field to agents so users can pick the LLM model
from the create / settings UI instead of editing custom_env / custom_args.
The previous "set MULTICA_<PROVIDER>_MODEL env var on the daemon" approach
forced one model per provider per machine and was easy to misconfigure
(e.g. -m as a custom_arg breaks codex app-server initialization).

Backend (server/pkg/agent):
- New `agent.ListModels(provider, path)` returns the models supported by a
  provider. Static catalogs for claude, codex, gemini, cursor, copilot;
  dynamic discovery for opencode (`opencode models`), pi (`pi --list-models`),
  openclaw (`openclaw agents list`); 60s TTL cache + empty-list fallback on
  failure. Hermes returns an empty list and `ModelSelectionSupported=false`
  because its model is configured out-of-band.
- `agent.DefaultModel(provider)` returns the recommended default per
  provider (Sonnet 4.6 for claude, GPT-5.4 for codex, Gemini 2.5 Pro for
  gemini, composer-1.5 for cursor); copilot/openclaw/hermes deliberately
  have no default. The static catalog tags one entry per provider with
  `Default: true` so the UI can render a badge.
- For openclaw, opts.Model is mapped to `--agent <name>` since the CLI
  rejects `--model` outright; custom_args `--agent` still wins for
  back-compat.

Daemon protocol (server/internal/daemon):
- Heartbeat response carries an optional `pending_model_list` request
  (same pattern as PingStore / UpdateStore). The daemon resolves models
  via `agent.ListModels`, including the `supported` flag, and reports
  back via /api/daemon/runtimes/{id}/models/{requestId}/result.
- Task dispatch uses a three-tier fallback for the runtime model:
  agent.model → MULTICA_<PROVIDER>_MODEL env → agent.DefaultModel(provider).

Server API (server/internal/handler):
- `agent.model` is a new column (migration 050) and surfaces in
  Agent / CreateAgent / UpdateAgent payloads.
- New endpoints under /api/runtimes/{id}/models: POST to initiate
  discovery, GET to poll the request, plus the daemon-side report
  endpoint above.

CLI (server/cmd/multica):
- `multica agent create / update --model <id>`. Help copy steers users
  away from passing --model via --custom-args, which fails on codex
  (app-server mode) and openclaw.

Frontend (packages/core, packages/views):
- `Agent.model`, `RuntimeModel`, `RuntimeModelListRequest`,
  `RuntimeModelsResult` types.
- `runtimes/models.ts` exports `runtimeModelsOptions(runtimeId)` which
  initiates discovery and polls the request to completion (500ms
  cadence, 30s ceiling).
- New `ModelDropdown` (packages/views/agents) — searchable popover,
  provider grouping, creatable manual entry, "default" badge on the
  shipped recommendation, disabled state when the provider reports
  `supported=false` (Hermes), and clears any stale model value in that
  case to avoid persisting a ghost configuration.
- Wired into create-agent-dialog and the agent settings tab.

Verification:
- gofmt clean on touched files
- `go build ./... && go test ./...` (server) green; new openclaw and
  models_test cases included
- `pnpm typecheck` green across all 6 packages

Closes the immediate UX gap behind MUL-1151. DeepSeek V4 (or any new
model) becomes a zero-code addition: add it to the relevant static
catalog, or rely on the creatable input for one-off use.
2026-04-20 22:45:56 +08:00

Multica — humans and agents, side by side

Multica

Multica

Your next 10 hires won't be human.

The open-source managed agents platform.
Turn coding agents into real teammates — assign tasks, track progress, compound skills.

CI GitHub stars

Website · Cloud · X · Self-Hosting · Contributing

English | 简体中文

What is Multica?

Multica turns coding agents into real teammates. Assign issues to an agent like you'd assign to a colleague — they'll pick up the work, write code, report blockers, and update statuses autonomously.

No more copy-pasting prompts. No more babysitting runs. Your agents show up on the board, participate in conversations, and compound reusable skills over time. Think of it as open-source infrastructure for managed agents — vendor-neutral, self-hosted, and designed for human + AI teams. Works with Claude Code, Codex, OpenClaw, OpenCode, Hermes, Gemini, Pi, and Cursor Agent.

Multica board view

Features

Multica manages the full agent lifecycle: from task assignment to execution monitoring to skill reuse.

  • Agents as Teammates — assign to an agent like you'd assign to a colleague. They have profiles, show up on the board, post comments, create issues, and report blockers proactively.
  • Autonomous Execution — set it and forget it. Full task lifecycle management (enqueue, claim, start, complete/fail) with real-time progress streaming via WebSocket.
  • Reusable Skills — every solution becomes a reusable skill for the whole team. Deployments, migrations, code reviews — skills compound your team's capabilities over time.
  • Unified Runtimes — one dashboard for all your compute. Local daemons and cloud runtimes, auto-detection of available CLIs, real-time monitoring.
  • Multi-Workspace — organize work across teams with workspace-level isolation. Each workspace has its own agents, issues, and settings.

Quick Install

brew install multica-ai/tap/multica

Use brew upgrade multica-ai/tap/multica to keep the CLI current.

macOS / Linux (install script)

curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash

Use this if Homebrew is not available. The script installs the Multica CLI on macOS and Linux by using Homebrew when it is on PATH, otherwise it downloads the binary directly.

Windows (PowerShell)

irm https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.ps1 | iex

Then configure, authenticate, and start the daemon in one command:

multica setup          # Connect to Multica Cloud, log in, start daemon

Self-hosting? Add --with-server to deploy a full Multica server on your machine:

curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash -s -- --with-server
multica setup self-host

Requires Docker. See the Self-Hosting Guide for details.


Getting Started

1. Set up and start the daemon

multica setup           # Configure, authenticate, and start the daemon

The daemon runs in the background and auto-detects agent CLIs (claude, codex, openclaw, opencode, hermes, gemini, pi, cursor-agent) on your PATH.

2. Verify your runtime

Open your workspace in the Multica web app. Navigate to Settings → Runtimes — you should see your machine listed as an active Runtime.

What is a Runtime? A Runtime is a compute environment that can execute agent tasks. It can be your local machine (via the daemon) or a cloud instance. Each runtime reports which agent CLIs are available, so Multica knows where to route work.

3. Create an agent

Go to Settings → Agents and click New Agent. Pick the runtime you just connected and choose a provider (Claude Code, Codex, OpenClaw, OpenCode, Hermes, Gemini, Pi, or Cursor Agent). Give your agent a name — this is how it will appear on the board, in comments, and in assignments.

4. Assign your first task

Create an issue from the board (or via multica issue create), then assign it to your new agent. The agent will automatically pick up the task, execute it on your runtime, and report progress — just like a human teammate.


Multica vs Paperclip

Multica Paperclip
Focus Team AI agent collaboration platform Solo AI agent company simulator
User model Multi-user teams with roles & permissions Single board operator
Agent interaction Issues + Chat conversations Issues + Heartbeat
Deployment Cloud-first Local-first
Management depth Lightweight (Issues / Projects / Labels) Heavy governance (Org chart / Approvals / Budgets)
Extensibility Skills system Skills + Plugin system

TL;DR — Multica is built for teams that want to collaborate with AI agents on real projects together.


CLI

The multica CLI connects your local machine to Multica — authenticate, manage workspaces, and run the agent daemon.

Command Description
multica login Authenticate (opens browser)
multica daemon start Start the local agent runtime
multica daemon status Check daemon status
multica setup One-command setup for Multica Cloud (configure + login + start daemon)
multica setup self-host Same, but for self-hosted deployments
multica issue list List issues in your workspace
multica issue create Create a new issue
multica update Update to the latest version

See the CLI and Daemon Guide for the full command reference.


Architecture

┌──────────────┐     ┌──────────────┐     ┌──────────────────┐
│   Next.js    │────>│  Go Backend  │────>│   PostgreSQL     │
│   Frontend   │<────│  (Chi + WS)  │<────│   (pgvector)     │
└──────────────┘     └──────┬───────┘     └──────────────────┘
                            │
                     ┌──────┴───────┐
                     │ Agent Daemon │  runs on your machine
                     └──────────────┘  (Claude Code, Codex, OpenCode,
                                        OpenClaw, Hermes, Gemini,
                                        Pi, Cursor Agent)
Layer Stack
Frontend Next.js 16 (App Router)
Backend Go (Chi router, sqlc, gorilla/websocket)
Database PostgreSQL 17 with pgvector
Agent Runtime Local daemon executing Claude Code, Codex, OpenClaw, OpenCode, Hermes, Gemini, Pi, or Cursor Agent

Development

For contributors working on the Multica codebase, see the Contributing Guide.

Prerequisites: Node.js v20+, pnpm v10.28+, Go v1.26+, Docker

make dev

make dev auto-detects your environment (main checkout or worktree), creates the env file, installs dependencies, sets up the database, runs migrations, and starts all services.

See CONTRIBUTING.md for the full development workflow, worktree support, testing, and troubleshooting.

Star History

Star History Chart
Description
No description provided
Readme 368 MiB
Languages
Go 49.6%
TypeScript 42.7%
MDX 6.3%
PLpgSQL 0.4%
CSS 0.3%
Other 0.5%