Open-source self-hosted platform to orchestrate AI coding agents like Claude Code and Codex as teammates on a shared Kanban board.
Drawing its name from the 1960s Multics time-sharing system, Multica pairs a Go orchestration backend with a desktop and local daemon to run command-line AI coding assistants as team members. Instead of leaving developers to supervise isolated terminal sessions, the platform coordinates tools like Claude Code, Codex, and Cursor Agent across a shared Kanban board with automated task queues and WebSocket status streams.
Commercial AI coding platforms like Devin and Factory Droid run developer agents in proprietary cloud sandboxes, charging monthly per-seat or usage fees while holding repository access on vendor servers. Multica shifts the operational model by decoupling orchestration from execution. Its control plane deploys as a self-hosted Go service with a Next.js web interface and PostgreSQL, while execution stays on local workstations or private build nodes through a lightweight daemon. Because this daemon invokes locally installed command-line tools—such as Claude Code, Codex, or Cursor Agent—source code and repository credentials remain inside your network.
That operational boundary shifts maintenance responsibility to internal engineering teams. Rather than relying on cloud-managed sandboxes, DevOps engineers must keep local daemons connected over WebSockets, configure runner machines, and manage individual model API quotas. In exchange, teams eliminate per-seat platform fees, maintain complete process visibility, and keep automated code modifications strictly behind internal firewalls.
Can Multica be self-hosted on private infrastructure? Yes. The server runs via Docker or Go and Next.js binaries alongside PostgreSQL with pgvector, while daemons connect over WebSockets from local or cloud hosts.
Does Multica supply its own AI models? No. Multica is an orchestration layer that drives external command-line agents like Claude Code, Codex, and Cursor Agent using your existing accounts.
Can multiple agents work on a single issue simultaneously? No. Tasks on a given issue run sequentially to prevent race conditions and conflicting file modifications across working directories.
Multica is an effective coordination layer for engineering teams that want to turn isolated command-line coding agents into a structured, self-hosted workflow without giving third-party platforms access to their source code. Active development and frequent releases make it practical for operational adoption, though teams must account for custom source-available licensing terms with commercial hosting limits and be prepared to manage their own worker daemons and model API costs.
These packages install the Multica desktop client, not the server. Each package is matched to Multica through the registry's own link to its source code or website.
winget install --id Multica.MulticaDesktop -eWe started this exact setup from scratch in a clean Linux machine on Nov 1, 2026 and checked it through Multica's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p multica && cd multica
curl -fsSL https://open-source.store/tools/multica/compose.yml -o compose.ymlcat > .env <<EOF
FRONTEND_ORIGIN=http://localhost:3000
MULTICA_APP_URL=http://localhost:3000
JWT_SECRET=$(openssl rand -hex 32)
POSTGRES_PASSWORD=$(openssl rand -hex 12)
EOFFRONTEND_ORIGIN — Public URL of the web frontend, used for CORS allowed origins (set to your public domain in production).MULTICA_APP_URL — Canonical URL of the web application, used for email links and redirects (set to your public domain in production).JWT_SECRET — Secret key used to sign and verify JWT authentication tokens. Generated above; keep it secret.POSTGRES_PASSWORD — Password for the PostgreSQL database user. Generated above; keep it secret.docker compose up -dservices:
postgres:
image: pgvector/pgvector:0.8.0-pg17
environment:
POSTGRES_DB: multica
POSTGRES_USER: multica
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test:
[
"CMD-SHELL",
"pg_isready -U multica -d multica",
]
interval: 5s
timeout: 5s
retries: 5
backend:
image: ghcr.io/multica-ai/multica-backend:v0.7.2
depends_on:
postgres:
condition: service_healthy
volumes:
- backend_uploads:/app/data/uploads
environment:
DATABASE_URL: postgres://multica:${POSTGRES_PASSWORD}@postgres:5432/multica?sslmode=disable
PORT: "8080"
JWT_SECRET: ${JWT_SECRET}
FRONTEND_ORIGIN: ${FRONTEND_ORIGIN}
MULTICA_APP_URL: ${MULTICA_APP_URL}
APP_ENV: production
DO_NOT_TRACK: "true"
ANALYTICS_DISABLED: "true"
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8080/health || exit 1"]
interval: 5s
timeout: 5s
retries: 10
start_period: 15s
frontend:
image: ghcr.io/multica-ai/multica-web:v0.7.2
depends_on:
backend:
condition: service_healthy
ports:
- "3000:3000"
environment:
HOSTNAME: "0.0.0.0"
REMOTE_API_URL: http://backend:8080
restart: unless-stopped
volumes:
pgdata:
backend_uploads:
Lint, codegen, breaking-change checks and dependency management in one Git-native CLI. Open source, no registry lock-in.
Show that Multica is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 97 s: ghcr.io/multica-ai/multica-web:v0.7.2, pgvector/pgvector:0.8.0-pg17, ghcr.io/multica-ai/multica-backend:v0.7.2.
Based on the upstream setup. Official self-hosting compose with Next.js frontend, Go backend, and PostgreSQL pgvector. Pinned images to v0.7.2 and pgvector to 0.8.0-pg17; database password, JWT secret, and public URLs moved to .env; runs in production mode.
backend-1 | 2026-11-01T21:00:10.105953844Z 21:00:10.105 WRN http request method=GET path=/api/app:getInfo status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000321 backend-1 | 2026-11-01T21:00:10.108516678Z 21:00:10.108 WRN http request method=GET path=/api/app:getInfo status=404 duration=8µs request_id=a6aa8720a98c/YET50II4qn-000322 backend-1 | 2026-11-01T21:00:10.206162303Z 21:00:10.204 WRN http request method=POST path=/api/stripe/webhook status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000323 backend-1 | 2026-11-01T21:00:10.206179261Z 21:00:10.204 WRN http request method=GET path=/api/action/status_show status=404 duration=5µs request_id=a6aa8720a98c/YET50II4qn-000324 backend-1 | 2026-11-01T21:00:10.206180594Z 21:00:10.204 WRN http request method=GET path=/api/action/status_show status=404 duration=2µs request_id=a6aa8720a98c/YET50II4qn-000325 backend-1 | 2026-11-01T21:00:10.253111969Z 21:00:10.253 WRN http request method=GET path=/api/install status=404 duration=18µs request_id=a6aa8720a98c/YET50II4qn-000327 backend-1 | 2026-11-01T21:00:10.254959428Z 21:00:10.254 WRN http request method=POST path=/api/stripe/webhook status=404 duration=10µs request_id=a6aa8720a98c/YET50II4qn-000328 backend-1 | 2026-11-01T21:00:10.302225969Z 21:00:10.302 WRN http request method=GET path=/api/app:getInfo status=404 duration=14µs request_id=a6aa8720a98c/YET50II4qn-000329 backend-1 | 2026-11-01T21:00:10.383038553Z 21:00:10.382 WRN http request method=GET path=/api/install status=404 duration=37µs request_id=a6aa8720a98c/YET50II4qn-000330 backend-1 | 2026-11-01T21:00:11.118528886Z 21:00:11.118 WRN http request method=GET path=/api/version status=404 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000331 backend-1 | 2026-11-01T21:00:11.118903261Z 21:00:11.118 WRN http request method=GET path=/api/version status=404 duration=7µs request_id=a6aa8720a98c/YET50II4qn-000332 backend-1 | 2026-11-01T21:00:11.119382678Z 21:00:11.119 WRN http request method=GET path=/api/captcha status=404 duration=11µs request_id=a6aa8720a98c/YET50II4qn-000333 backend-1 | 2026-11-01T21:00:11.122997470Z 21:00:11.122 WRN http request method=GET path=/api/captcha status=404 duration=7µs request_id=a6aa8720a98c/YET50II4qn-000334 backend-1 | 2026-11-01T21:00:11.248221595Z 21:00:11.248 WRN http request method=POST path=/auth/login status=404 duration=24µs request_id=a6aa8720a98c/YET50II4qn-000335 backend-1 | 2026-11-01T21:00:11.248992803Z 21:00:11.248 WRN http request method=POST path=/auth/login status=404 duration=6µs request_id=a6aa8720a98c/YET50II4qn-000336 backend-1 | 2026-11-01T21:00:11.430351762Z 21:00:11.426 WRN http request method=POST path=/v1/chat/completions status=401 duration=33µs request_id=a6aa8720a98c/YET50II4qn-000337 backend-1 | 2026-11-01T21:00:11.430374137Z 21:00:11.427 WRN http request method=POST path=/v1/chat/completions status=401 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000338 backend-1 | 2026-11-01T21:00:11.507796137Z 21:00:11.507 WRN http request method=GET path=/v1/models status=401 duration=25µs request_id=a6aa8720a98c/YET50II4qn-000339 backend-1 | 2026-11-01T21:00:11.508220762Z 21:00:11.508 WRN http request method=GET path=/v1/models status=401 duration=9µs request_id=a6aa8720a98c/YET50II4qn-000340 backend-1 | 2026-11-01T21:00:11.610616178Z 21:00:11.610 WRN http request method=GET path=/v1/onboarding/status status=401 duration=27µs request_id=a6aa8720a98c/YET50II4qn-000341 backend-1 | 2026-11-01T21:00:11.610724303Z 21:00:11.610 WRN http request method=GET path=/v1/onboarding/status status=401 duration=5µs request_id=a6aa8720a98c/YET50II4qn-000342 backend-1 | 2026-11-01T21:00:12.080788845Z 21:00:12.080 WRN http request method=POST path=/api/system/getConf status=404 duration=15µs request_id=a6aa8720a98c/YET50II4qn-000343 backend-1 | 2026-11-01T21:00:12.182572262Z 21:00:12.182 WRN http request method=POST path=/api/system/getConf status=404 duration=15µs request_id=a6aa8720a98c/YET50II4qn-000344 backend-1 | 2026-11-01T21:00:12.221836595Z 21:00:12.221 WRN http request method=GET path=/v1/models status=401 duration=22µs request_id=a6aa8720a98c/YET50II4qn-000345 backend-1 | 2026-11-01T21:00:12.223845762Z 21:00:12.223 WRN http request method=GET path=/v1/models status=401 duration=22µs request_id=a6aa8720a98c/YET50II4qn-000346 backend-1 | 2026-11-01T21:00:12.876479137Z 21:00:12.876 WRN http request method=GET path=/api/auth status=404 duration=14µs request_id=a6aa8720a98c/YET50II4qn-000347 backend-1 | 2026-11-01T21:00:12.877154429Z 21:00:12.877 WRN http request method=GET path=/api/v1/models status=404 duration=6µs request_id=a6aa8720a98c/YET50II4qn-000348 backend-1 | 2026-11-01T21:00:12.877710387Z 21:00:12.877 WRN http request method=GET path=/api/v1/models status=404 duration=4µs request_id=a6aa8720a98c/YET50II4qn-000349 backend-1 | 2026-11-01T21:00:12.890857429Z 21:00:12.890 WRN http request method=GET path=/api/auth status=404 duration=14µs request_id=a6aa8720a98c/YET50II4qn-000350 backend-1 | 2026-11-01T21:00:12.971950221Z 21:00:12.971 WRN http request method=POST path=/api/session/new status=404 duration=14µs request_id=a6aa8720a98c/YET50II4qn-000351 backend-1 | 2026-11-01T21:00:12.979551012Z 21:00:12.979 WRN http request method=POST path=/api/session/new status=404 duration=10µs request_id=a6aa8720a98c/YET50II4qn-000352 backend-1 | 2026-11-01T21:00:13.380448846Z 21:00:13.380 WRN http request method=GET path=/api/v1/repos/search status=404 duration=74µs request_id=a6aa8720a98c/YET50II4qn-000353 backend-1 | 2026-11-01T21:00:13.396204512Z 21:00:13.396 WRN http request method=GET path=/api/v1/repos/search status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000354 backend-1 | 2026-11-01T21:00:13.488698346Z 21:00:13.488 WRN http request method=GET path=/api/version status=404 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000355 backend-1 | 2026-11-01T21:00:13.489283846Z 21:00:13.489 WRN http request method=GET path=/api/version status=404 duration=4µs request_id=a6aa8720a98c/YET50II4qn-000356 backend-1 | 2026-11-01T21:00:14.676738055Z 21:00:14.676 WRN http request method=POST path=/api/notebook/lsNotebooks status=404 duration=19µs request_id=a6aa8720a98c/YET50II4qn-000360 backend-1 | 2026-11-01T21:00:14.677378888Z 21:00:14.677 WRN http request method=POST path=/api/notebook/lsNotebooks status=404 duration=8µs request_id=a6aa8720a98c/YET50II4qn-000361 backend-1 | 2026-11-01T21:00:14.684767805Z 21:00:14.684 WRN http request method=POST path=/api/session/reset_password status=404 duration=10µs request_id=a6aa8720a98c/YET50II4qn-000362 backend-1 | 2026-11-01T21:00:14.685105305Z 21:00:14.685 WRN http request method=POST path=/api/session/reset_password status=404 duration=7µs request_id=a6aa8720a98c/YET50II4qn-000363 backend-1 | 2026-11-01T21:00:15.061879680Z 21:00:15.061 WRN http request method=POST path=/api/auditPublishing/getAll status=404 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000365 backend-1 | 2026-11-01T21:00:15.062185722Z 21:00:15.062 WRN http request method=POST path=/api/auditPublishing/getAll status=404 duration=3µs request_id=a6aa8720a98c/YET50II4qn-000366 backend-1 | 2026-11-01T21:00:15.231343972Z 21:00:15.231 INF db pool stats role=primary max_conns=25 total_conns=9 acquired_conns=2 idle_conns=7 constructing_conns=0 acquire_count_delta=61 empty_acquire_delta=0 canceled_acquire_delta=0 avg_acquire_ms=0 backend-1 | 2026-11-01T21:00:15.251877638Z 21:00:15.251 INF scheduler claimed plan component=scheduler runner_id=650772f4-f28e-4ed1-8b20-8dd072b0127b job=issue_child_event_sweep scope=global/global plan_time=2026-11-01T21:00:00Z attempt=1 execution_id=01a198e9-b412-7ade-9054-cec78add5e61 backend-1 | 2026-11-01T21:00:15.253263388Z 21:00:15.253 INF scheduler: handler succeeded component=scheduler runner_id=650772f4-f28e-4ed1-8b20-8dd072b0127b job=issue_child_event_sweep scope=global/global plan_time=2026-11-01T21:00:00Z attempt=1 execution_id=01a198e9-b412-7ade-9054-cec78add5e61 duration_ms=0 rows_affected=0 backend-1 | 2026-11-01T21:00:15.253775055Z 21:00:15.253 INF scheduler claimed plan component=scheduler runner_id=650772f4-f28e-4ed1-8b20-8dd072b0127b job=rollup_task_usage_hourly scope=global/global plan_time=2026-11-01T20:55:00Z attempt=1 execution_id=01a198e9-b415-7777-b12c-dadc2570ce75 backend-1 | 2026-11-01T21:00:15.257113013Z 21:00:15.257 INF scheduler: handler succeeded component=scheduler runner_id=650772f4-f28e-4ed1-8b20-8dd072b0127b job=rollup_task_usage_hourly scope=global/global plan_time=2026-11-01T20:55:00Z attempt=1 execution_id=01a198e9-b415-7777-b12c-dadc2570ce75 duration_ms=3 rows_affected=0 backend-1 | 2026-11-01T21:00:15.257365430Z 21:00:15.257 INF scheduler claimed plan component=scheduler runner_id=650772f4-f28e-4ed1-8b20-8dd072b0127b job=prune_search_index_changes scope=global/global plan_time=2026-11-01T21:00:00Z attempt=1 execution_id=01a198e9-b419-7172-a0ad-5d11f4d23c76 backend-1 | 2026-11-01T21:00:15.258221930Z 21:00:15.258 INF scheduler: handler succeeded component=scheduler runner_id=650772f4-f28e-4ed1-8b20-8dd072b0127b job=prune_search_index_changes scope=global/global plan_time=2026-11-01T21:00:00Z attempt=1 execution_id=01a198e9-b419-7172-a0ad-5d11f4d23c76 duration_ms=0 rows_affected=0 backend-1 | 2026-11-01T21:00:15.258503555Z 21:00:15.258 INF scheduler claimed plan component=scheduler runner_id=650772f4-f28e-4ed1-8b20-8dd072b0127b job=issue_wakeup_dispatch scope=global/global plan_time=2026-11-01T21:00:00Z attempt=1 execution_id=01a198e9-b41a-7385-839e-d0adf30731fe backend-1 | 2026-11-01T21:00:15.260738847Z 21:00:15.260 INF issue wakeup dispatch pass input_rules=0 due_rules=0 duration_ms=1 stopped=drained failures=0 held_inputs=0 pending_scan=complete backend-1 | 2026-11-01T21:00:15.261116055Z 21:00:15.261 INF scheduler: handler succeeded component=scheduler runner_id=650772f4-f28e-4ed1-8b20-8dd072b0127b job=issue_wakeup_dispatch scope=global/global plan_time=2026-11-01T21:00:00Z attempt=1 execution_id=01a198e9-b41a-7385-839e-d0adf30731fe duration_ms=2 rows_affected=0 backend-1 | 2026-11-01T21:00:15.554442972Z 21:00:15.554 WRN http request method=POST path=/api/designer/v1/file-content status=404 duration=25µs request_id=a6aa8720a98c/YET50II4qn-000368 backend-1 | 2026-11-01T21:00:15.586824972Z 21:00:15.569 WRN http request method=POST path=/api/v4/projects/1/repository/files/3LWNtA7gkoJmZy2RlXjSzkPjWa0 status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000369 backend-1 | 2026-11-01T21:00:15.589618430Z 21:00:15.589 WRN http request method=POST path=/api/designer/v1/file-content status=404 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000370 backend-1 | 2026-11-01T21:00:15.645017680Z 21:00:15.644 WRN http request method=POST path=/api/v4/projects/1/repository/files/3LWNtA7gkoJmZy2RlXjSzkPjWa0 status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000371 backend-1 | 2026-11-01T21:00:15.808331680Z 21:00:15.808 WRN http request method=POST path=/api/acp/agents status=404 duration=18µs request_id=a6aa8720a98c/YET50II4qn-000372 backend-1 | 2026-11-01T21:00:16.146111514Z 21:00:16.145 WRN http request method=GET path=/api/v1/auto_login status=404 duration=16µs request_id=a6aa8720a98c/YET50II4qn-000373 backend-1 | 2026-11-01T21:00:16.147034555Z 21:00:16.146 WRN http request method=GET path=/api/v1/auto_login status=404 duration=8µs request_id=a6aa8720a98c/YET50II4qn-000374 backend-1 | 2026-11-01T21:00:16.229198389Z 21:00:16.229 WRN http request method=POST path=/api/acp/agents status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000375 backend-1 | 2026-11-01T21:00:16.561038181Z 21:00:16.560 WRN http request method=POST path=/api/login status=404 duration=16µs request_id=a6aa8720a98c/YET50II4qn-000376 backend-1 | 2026-11-01T21:00:16.568549389Z 21:00:16.568 WRN http request method=POST path=/api/login status=404 duration=17µs request_id=a6aa8720a98c/YET50II4qn-000377 backend-1 | 2026-11-01T21:00:16.569101681Z 21:00:16.569 WRN http request method=POST path=/api/login status=404 duration=5µs request_id=a6aa8720a98c/YET50II4qn-000378 backend-1 | 2026-11-01T21:00:16.830145097Z 21:00:16.830 WRN http request method=POST path=/api/login status=404 duration=14µs request_id=a6aa8720a98c/YET50II4qn-000379 backend-1 | 2026-11-01T21:00:16.899317014Z 21:00:16.899 WRN http request method=POST path=/api/login status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000380 backend-1 | 2026-11-01T21:00:16.951175556Z 21:00:16.950 WRN http request method=POST path=/api/login status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000381 backend-1 | 2026-11-01T21:00:17.040198056Z 21:00:17.039 WRN http request method=POST path=/api/v1/user/login status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000382 backend-1 | 2026-11-01T21:00:17.040217139Z 21:00:17.039 WRN http request method=POST path=/auth/login status=404 duration=3µs request_id=a6aa8720a98c/YET50II4qn-000383 backend-1 | 2026-11-01T21:00:17.046836723Z 21:00:17.046 WRN http request method=POST path=/api/v1/user/login status=404 duration=14µs request_id=a6aa8720a98c/YET50II4qn-000384 backend-1 | 2026-11-01T21:00:17.206438431Z 21:00:17.206 WRN http request method=POST path=/api/account/auth/form status=404 duration=17µs request_id=a6aa8720a98c/YET50II4qn-000385 backend-1 | 2026-11-01T21:00:17.239963848Z 21:00:17.239 WRN http request method=POST path=/api/json/session/signin status=404 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000386 backend-1 | 2026-11-01T21:00:17.347532639Z 21:00:17.347 WRN http request method=POST path=/api/catalog/v1/oauth/tokens status=404 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000387 backend-1 | 2026-11-01T21:00:17.354469806Z 21:00:17.354 WRN http request method=POST path=/api/catalog/v1/oauth/tokens status=404 duration=16µs request_id=a6aa8720a98c/YET50II4qn-000388 backend-1 | 2026-11-01T21:00:17.372745264Z 21:00:17.372 WRN http request method=POST path=/api/json/session/signin status=404 duration=53µs request_id=a6aa8720a98c/YET50II4qn-000389 backend-1 | 2026-11-01T21:00:18.551456583Z 21:00:18.551 WRN http request method=POST path=/auth/login status=404 duration=16µs request_id=a6aa8720a98c/YET50II4qn-000390 backend-1 | 2026-11-01T21:00:18.665960000Z 21:00:18.665 WRN http request method=POST path=/api/user/login status=404 duration=15µs request_id=a6aa8720a98c/YET50II4qn-000391 backend-1 | 2026-11-01T21:00:18.666648333Z 21:00:18.666 WRN http request method=POST path=/api/user/login status=404 duration=5µs request_id=a6aa8720a98c/YET50II4qn-000392 backend-1 | 2026-11-01T21:00:18.769809875Z 21:00:18.769 WRN http request method=GET path=/api/v1/users/admin status=404 duration=15µs request_id=a6aa8720a98c/YET50II4qn-000393 backend-1 | 2026-11-01T21:00:18.900885083Z 21:00:18.900 WRN http request method=GET path=/api/v1/users/admin status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000394 backend-1 | 2026-11-01T21:00:18.995357042Z 21:00:18.995 WRN http request method=POST path=/api/account/auth/form status=404 duration=15µs request_id=a6aa8720a98c/YET50II4qn-000395 backend-1 | 2026-11-01T21:00:19.010768542Z 21:00:19.010 WRN http request method=POST path=/api/account/auth/form status=404 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000396 backend-1 | 2026-11-01T21:00:19.035263333Z 21:00:19.035 WRN http request method=POST path=/api/account/auth/form status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000397 backend-1 | 2026-11-01T21:00:19.038978500Z 21:00:19.038 WRN http request method=POST path=/api/account/auth/form status=404 duration=7µs request_id=a6aa8720a98c/YET50II4qn-000398 backend-1 | 2026-11-01T21:00:19.042538625Z 21:00:19.042 WRN http request method=POST path=/api/account/auth/form status=404 duration=6µs request_id=a6aa8720a98c/YET50II4qn-000399 backend-1 | 2026-11-01T21:00:19.046275625Z 21:00:19.046 WRN http request method=POST path=/api/account/auth/form status=404 duration=9µs request_id=a6aa8720a98c/YET50II4qn-000400 backend-1 | 2026-11-01T21:00:19.047183750Z 21:00:19.047 WRN http request method=POST path=/api/account/auth/form status=404 duration=5µs request_id=a6aa8720a98c/YET50II4qn-000401 backend-1 | 2026-11-01T21:00:19.391749083Z 21:00:19.391 WRN http request method=POST path=/api/v2/login status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000402 backend-1 | 2026-11-01T21:00:19.405799250Z 21:00:19.405 WRN http request method=POST path=/api/v2/login status=404 duration=20µs request_id=a6aa8720a98c/YET50II4qn-000403 backend-1 | 2026-11-01T21:00:19.498026167Z 21:00:19.497 WRN http request method=POST path=/api/v1/login status=404 duration=15µs request_id=a6aa8720a98c/YET50II4qn-000404 backend-1 | 2026-11-01T21:00:19.498821292Z 21:00:19.498 WRN http request method=POST path=/api/v1/login status=404 duration=8µs request_id=a6aa8720a98c/YET50II4qn-000405 backend-1 | 2026-11-01T21:00:20.083689500Z 21:00:20.083 WRN http request method=POST path=/api/auth/login status=404 duration=14µs request_id=a6aa8720a98c/YET50II4qn-000406 backend-1 | 2026-11-01T21:00:20.084641625Z 21:00:20.084 WRN http request method=POST path=/api/auth/login status=404 duration=5µs request_id=a6aa8720a98c/YET50II4qn-000407 backend-1 | 2026-11-01T21:00:21.209315709Z 21:00:21.209 WRN http request method=GET path=/api/v3/users status=404 duration=18µs request_id=a6aa8720a98c/YET50II4qn-000409 backend-1 | 2026-11-01T21:00:21.236684668Z 21:00:21.236 WRN http request method=GET path=/auth status=404 duration=10µs request_id=a6aa8720a98c/YET50II4qn-000410 backend-1 | 2026-11-01T21:00:21.335737709Z 21:00:21.335 WRN http request method=POST path=/api/v1/users/signin status=404 duration=44µs request_id=a6aa8720a98c/YET50II4qn-000411 backend-1 | 2026-11-01T21:00:21.335947501Z 21:00:21.335 WRN http request method=POST path=/api/v1/users/signin status=404 duration=12µs request_id=a6aa8720a98c/YET50II4qn-000412 backend-1 | 2026-11-01T21:00:21.336086876Z 21:00:21.336 WRN http request method=GET path=/auth status=404 duration=9µs request_id=a6aa8720a98c/YET50II4qn-000413 backend-1 | 2026-11-01T21:00:21.504908918Z 21:00:21.504 WRN http request method=POST path=/api/v5/login status=404 duration=15µs request_id=a6aa8720a98c/YET50II4qn-000414 backend-1 | 2026-11-01T21:00:21.505071001Z 21:00:21.504 WRN http request method=POST path=/api/v4/auth status=404 duration=3µs request_id=a6aa8720a98c/YET50II4qn-000415 backend-1 | 2026-11-01T21:00:21.505109709Z 21:00:21.504 WRN http request method=POST path=/api/v5/login status=404 duration=2µs request_id=a6aa8720a98c/YET50II4qn-000416 backend-1 | 2026-11-01T21:00:21.505148334Z 21:00:21.504 WRN http request method=POST path=/api/v4/auth status=404 duration=1µs request_id=a6aa8720a98c/YET50II4qn-000417 backend-1 | 2026-11-01T21:00:22.643932918Z 21:00:22.643 WRN http request method=POST path=/api/method/login status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000418 backend-1 | 2026-11-01T21:00:22.645486252Z 21:00:22.645 WRN http request method=POST path=/api/method/login status=404 duration=6µs request_id=a6aa8720a98c/YET50II4qn-000419 backend-1 | 2026-11-01T21:00:22.882146085Z 21:00:22.882 WRN http request method=GET path=/api/proxy/tcp status=404 duration=32µs request_id=a6aa8720a98c/YET50II4qn-000420 backend-1 | 2026-11-01T21:00:22.883497502Z 21:00:22.883 WRN http request method=GET path=/api/proxy/tcp status=404 duration=18µs request_id=a6aa8720a98c/YET50II4qn-000421 backend-1 | 2026-11-01T21:00:23.053008293Z 21:00:23.052 WRN http request method=POST path=/api/v1/login status=404 duration=14µs request_id=a6aa8720a98c/YET50II4qn-000422 backend-1 | 2026-11-01T21:00:23.053731418Z 21:00:23.053 WRN http request method=POST path=/api/v1/login status=404 duration=5µs request_id=a6aa8720a98c/YET50II4qn-000423 backend-1 | 2026-11-01T21:00:23.560362669Z 21:00:23.560 WRN http request method=GET path=/api/v2.0/systeminfo status=404 duration=13µs request_id=a6aa8720a98c/YET50II4qn-000424 backend-1 | 2026-11-01T21:00:23.560962585Z 21:00:23.560 WRN http request method=GET path=/api/v2.0/systeminfo status=404 duration=4µs request_id=a6aa8720a98c/YET50II4qn-000425 backend-1 | 2026-11-01T21:00:23.562387752Z 21:00:23.562 DBG auth: no token found path=/api/tokens backend-1 | 2026-11-01T21:00:23.562409544Z 21:00:23.562 WRN http request method=POST path=/api/tokens status=401 duration=954µs request_id=a6aa8720a98c/YET50II4qn-000426 backend-1 | 2026-11-01T21:00:23.562510419Z 21:00:23.562 DBG auth: no token found path=/api/tokens backend-1 | 2026-11-01T21:00:23.562538877Z 21:00:23.562 WRN http request method=POST path=/api/tokens status=401 duration=40µs request_id=a6aa8720a98c/YET50II4qn-000427 backend-1 | 2026-11-01T21:00:25.614847753Z 21:00:25.614 WRN http request method=POST path=/api/authenticate status=404 duration=18µs request_id=a6aa8720a98c/YET50II4qn-000429 backend-1 | 2026-11-01T21:00:25.616225920Z 21:00:25.616 WRN http request method=POST path=/api/authenticate status=404 duration=5µs request_id=a6aa8720a98c/YET50II4qn-000430 backend-1 | 2026-11-01T21:00:25.723586295Z 21:00:25.723 WRN http request method=GET path=/api/v3/users status=404 duration=15µs request_id=a6aa8720a98c/YET50II4qn-000431 backend-1 | 2026-11-01T21:00:30.233201797Z 21:00:30.231 INF db pool stats role=primary max_conns=25 total_conns=9 acquired_conns=0 idle_conns=9 constructing_conns=0 acquire_count_delta=96 empty_acquire_delta=0 canceled_acquire_delta=0 avg_acquire_ms=0 backend-1 | 2026-11-01T21:00:30.290556380Z 21:00:30.290 WRN http request method=POST path=/api/authenticate status=404 duration=16µs request_id=a6aa8720a98c/YET50II4qn-000432 backend-1 | 2026-11-01T21:00:30.297100464Z 21:00:30.296 WRN http request method=POST path=/api/authenticate status=404 duration=17µs request_id=a6aa8720a98c/YET50II4qn-000433 backend-1 | 2026-11-01T21:00:30.453184130Z 21:00:30.453 WRN http request method=POST path=/api/sessions status=404 duration=17µs request_id=a6aa8720a98c/YET50II4qn-000435 backend-1 | 2026-11-01T21:00:30.465174547Z 21:00:30.463 WRN http request method=POST path=/api/sessions status=404 duration=18µs request_id=a6aa8720a98c/YET50II4qn-000436