Add Multica template

Open-source managed agents platform (Next.js + Go + pgvector).
Builds from source via remote git context since no pre-built images
are published. Exposes two Traefik domains: frontend (3000) and
backend (8080) for the CLI/daemon.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Andreas Enemyr
2026-04-17 13:35:34 +02:00
parent 4902cbf105
commit 30d789cb45
4 changed files with 136 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
name: multica
services:
postgres:
image: pgvector/pgvector:pg17
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 10
backend:
build:
context: "https://github.com/multica-ai/multica.git#main"
dockerfile: Dockerfile
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "8080"
volumes:
- backend_uploads:/app/data/uploads
environment:
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable
PORT: "8080"
JWT_SECRET: ${JWT_SECRET}
FRONTEND_ORIGIN: ${FRONTEND_ORIGIN}
ALLOWED_ORIGINS: ${ALLOWED_ORIGINS}
MULTICA_APP_URL: ${MULTICA_APP_URL}
RESEND_API_KEY: ${RESEND_API_KEY}
RESEND_FROM_EMAIL: ${RESEND_FROM_EMAIL}
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
GOOGLE_REDIRECT_URI: ${GOOGLE_REDIRECT_URI}
COOKIE_DOMAIN: ${COOKIE_DOMAIN}
S3_BUCKET: ${S3_BUCKET}
S3_REGION: ${S3_REGION}
CLOUDFRONT_DOMAIN: ${CLOUDFRONT_DOMAIN}
CLOUDFRONT_KEY_PAIR_ID: ${CLOUDFRONT_KEY_PAIR_ID}
CLOUDFRONT_PRIVATE_KEY: ${CLOUDFRONT_PRIVATE_KEY}
frontend:
build:
context: "https://github.com/multica-ai/multica.git#main"
dockerfile: Dockerfile.web
args:
REMOTE_API_URL: http://backend:8080
NEXT_PUBLIC_WS_URL: ${NEXT_PUBLIC_WS_URL}
NEXT_PUBLIC_GOOGLE_CLIENT_ID: ${NEXT_PUBLIC_GOOGLE_CLIENT_ID}
restart: unless-stopped
depends_on:
- backend
ports:
- "3000"
environment:
HOSTNAME: "0.0.0.0"
volumes:
pgdata:
backend_uploads:

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" role="img" aria-label="Multica">
<polygon
fill="#111827"
points="35,51.1 35,80 45,80 45,51.1 71.8,77.9 78.9,70.8 52.1,44 90,44 90,34 52.1,34 78.9,7.2 71.8,0.1 45,26.9 45,-11 35,-11 35,26.9 8.2,0.1 1.1,7.2 27.9,34 -10,34 -10,44 27.9,44 1.1,70.8 8.2,77.9"
transform="translate(5, 5.5) scale(0.87)"
/>
</svg>

After

Width:  |  Height:  |  Size: 382 B

View File

@@ -0,0 +1,40 @@
[variables]
app_domain = "${domain}"
api_domain = "${domain}"
jwt_secret = "${password:64}"
postgres_password = "${password:32}"
[config]
[[config.domains]]
serviceName = "frontend"
port = 3000
host = "${app_domain}"
path = "/"
[[config.domains]]
serviceName = "backend"
port = 8080
host = "${api_domain}"
path = "/"
[config.env]
POSTGRES_DB = "multica"
POSTGRES_USER = "multica"
POSTGRES_PASSWORD = "${postgres_password}"
JWT_SECRET = "${jwt_secret}"
FRONTEND_ORIGIN = "https://${app_domain}"
ALLOWED_ORIGINS = "https://${app_domain}"
MULTICA_APP_URL = "https://${app_domain}"
NEXT_PUBLIC_WS_URL = "wss://${api_domain}/ws"
RESEND_API_KEY = ""
RESEND_FROM_EMAIL = "noreply@multica.ai"
GOOGLE_CLIENT_ID = ""
GOOGLE_CLIENT_SECRET = ""
GOOGLE_REDIRECT_URI = "https://${app_domain}/auth/callback"
NEXT_PUBLIC_GOOGLE_CLIENT_ID = ""
COOKIE_DOMAIN = ""
S3_BUCKET = ""
S3_REGION = "us-west-2"
CLOUDFRONT_DOMAIN = ""
CLOUDFRONT_KEY_PAIR_ID = ""
CLOUDFRONT_PRIVATE_KEY = ""

View File

@@ -4182,6 +4182,27 @@
"java"
]
},
{
"id": "multica",
"name": "Multica",
"version": "latest",
"description": "Multica is an open-source managed agents platform for teams. Assign tasks to AI coding agents (Claude Code, Codex, OpenClaw and more) that execute autonomously, report progress, and build reusable skills over time.",
"logo": "multica.svg",
"links": {
"github": "https://github.com/multica-ai/multica",
"website": "https://multica.ai",
"docs": "https://github.com/multica-ai/multica/blob/main/SELF_HOSTING.md"
},
"tags": [
"ai",
"agents",
"automation",
"self-hosted",
"claude-code",
"codex",
"developer-tools"
]
},
{
"id": "mumble",
"name": "Mumble",