Merge pull request #799 from enemyrr/multica-clean

Add Multica template
This commit is contained in:
Mauricio Siu
2026-07-08 10:22:30 -06:00
committed by GitHub
5 changed files with 124 additions and 1 deletions

View File

@@ -1,7 +1,7 @@
{
"id": "mediafetch",
"name": "MediaFetch",
"version": "1.3.5",
"version": "1.1.1",
"description": "A tiny, self-hosted web wrapper for yt-dlp to download video and audio. Optional basic auth.",
"logo": "mediafetch.svg",
"links": {

View File

@@ -0,0 +1,63 @@
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
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_GOOGLE_CLIENT_ID: ${NEXT_PUBLIC_GOOGLE_CLIENT_ID}
restart: unless-stopped
depends_on:
- backend
environment:
HOSTNAME: "0.0.0.0"
volumes:
pgdata:
backend_uploads:

View File

@@ -0,0 +1,21 @@
{
"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"
]
}

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,32 @@
[variables]
app_domain = "${domain}"
jwt_secret = "${password:64}"
postgres_password = "${password:32}"
[config]
[[config.domains]]
serviceName = "frontend"
port = 3000
host = "${app_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}"
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 = ""