Multica Docs

환경 변수

자체 호스팅 Multica에서 자주 사용하는 서버, 저장소, 연동, 런타임 설정입니다.

Multica는 프로세스를 시작할 때 환경 변수를 읽습니다. 수정 후에는 보통 해당 API, Web 또는 데몬을 다시 시작해야 합니다. Docker Compose의 docker compose restart.env를 다시 읽지 않으므로 up -d로 컨테이너를 다시 만들어야 적용됩니다.

이 페이지에는 배포자를 위한 설정만 나열하며 테스트 변수와 내부 작업 변수는 다루지 않습니다. 여기서는 그룹별 참조를 제공하고 전체 배포 단계는 자체 호스팅 빠른 시작을 참고하세요.

프로덕션 최소 설정

DATABASE_URL=postgres://user:password@postgres:5432/multica?sslmode=require
JWT_SECRET=<long-random-secret>
APP_ENV=production
FRONTEND_ORIGIN=https://multica.example.com
MULTICA_APP_URL=https://multica.example.com
MULTICA_PUBLIC_URL=https://api.multica.example.com

인증 코드 전달 backend도 하나 선택해야 합니다. 설정하지 않으면 인증 코드는 서버 로그에만 기록됩니다. 워크스페이스 초대 이메일에는 계속 Resend 또는 SMTP가 필요합니다.

JWT_SECRET은 프로덕션에서 필수입니다. APP_ENV=production일 때 비어 있거나 알려진 자리표시자 값이면 백엔드가 부팅을 거부합니다(openssl rand -hex 32로 생성). MULTICA_DEV_VERIFICATION_CODE도 설정하지 마세요.

API와 데이터베이스

변수기본값설명
DATABASE_URL로컬 multica 데이터베이스PostgreSQL 연결 주소
DATABASE_MAX_CONNS25API 프로세스 하나의 최대 데이터베이스 연결 수
DATABASE_MIN_CONNS5API 프로세스 하나가 유지하는 최소 연결 수
MULTICA_DATABASE_STARTUP_TIMEOUT3m컨테이너 시작 중 migration과 API가 공유하는 일시적인 데이터베이스 장애 재시도 시간. 0으로 설정하면 각 단계에서 한 번만 시도
MULTICA_DATABASE_CONNECT_TIMEOUT5s시작 중 각 연결 시도의 폴백 제한 시간. pgx 기본 connect_timeout, PGCONNECT_TIMEOUT 또는 service 설정이 우선 적용됨
PORT8080API listen port
JWT_SECRET프로덕션에서 필수로그인 JWT와 일부 서명 절차에서 사용하는 키. 프로덕션에서는 비어 있거나 알려진 자리표시자 값으로 부팅 거부
APP_ENV비어 있음프로덕션 환경에서는 production으로 설정
AUTH_TOKEN_TTL720h(30일)브라우저 JWT와 cookie 유효 기간. Go duration 또는 양의 정수 초 허용
LOG_LEVEL앱 기본값로그 수준
MULTICA_SHUTDOWN_HOLD_DURATION0종료 신호를 받은 뒤 graceful shutdown을 시작하기 전 대기 시간
MULTICA_RUNTIME_RECONNECT_GRACE3h오프라인 런타임이 진행 중인 작업을 실패시키지 않고 재연결할 수 있는 유예 시간. 150s 미만은 150s로 조정됨

Kubernetes에서 shutdown hold를 설정하면 terminationGracePeriodSeconds가 hold와 실제 종료에 필요한 시간의 합보다 커야 합니다.

공개 주소와 브라우저 접근

변수기본값설명
FRONTEND_ORIGIN비어 있음사용자가 접근하는 프런트엔드 origin. CORS, cookie, 초대 링크에 사용
MULTICA_APP_URLFRONTEND_ORIGIN으로 fallback사용자가 접근할 수 있는 Web 주소. CLI 로그인과 계정 연결 링크에 사용
MULTICA_PUBLIC_URL비어 있음공개 API 주소. webhook URL과 런타임 연결 안내에 사용
MULTICA_DAEMON_SERVER_URLMULTICA_PUBLIC_URL, 그다음 MULTICA_APP_URL / FRONTEND_ORIGIN으로 fallbackAPI 프로세스가 multica setup self-host 명령에 넣는 서버 URL. 데몬이 접근하는 API URL이 공개 webhook URL과 다를 때 설정
CORS_ALLOWED_ORIGINS비어 있음추가로 허용할 HTTP origin, 쉼표로 구분
ALLOWED_ORIGINSCORS 또는 프런트엔드 주소로 fallbackWebSocket origin allowlist, 쉼표로 구분
COOKIE_DOMAIN비어 있음프런트엔드와 backend의 host가 다르고 브라우저가 API 도메인에 직접 접근할 때 필수. 단일 도메인 배포에서는 비워 둠

MULTICA_DAEMON_SERVER_URL은 인증이 필요 없는 /api/config 엔드포인트에서 반환되며 클라이언트가 읽을 수 있습니다. 공개 설정으로 취급하고 자격 증명, 토큰 또는 기타 비밀을 절대 포함하지 마세요.

프런트엔드와 API가 서로 다른 host를 사용하고 브라우저가 API 도메인에 직접 접근한다면 COOKIE_DOMAIN을 설정해야 합니다. 설정하지 않으면 브라우저가 CSRF cookie를 읽지 못해 모든 쓰기 요청이 403 CSRF validation failed를 반환하고 읽기 요청만 정상 작동합니다. 두 host를 모두 포함하는 가장 좁은 상위 도메인을 사용하세요(.example.com보다 .agent.example.com이 더 적합). 이 설정은 로그인 세션 cookie를 해당 도메인의 모든 host로 확장하므로 모든 host를 같은 신뢰 주체가 운영할 때만 사용할 수 있습니다. 수정 후 두 host에서 이전 cookie를 삭제하고 다시 로그인해야 합니다. 자체 호스팅 빠른 시작의 same-origin 구성을 사용해 브라우저가 app 도메인에만 접근한다면 비워 두세요. IP 주소는 입력하지 마세요. 브라우저가 IP Domain이 포함된 cookie를 무시합니다.

자체 호스팅 배포에서는 FRONTEND_ORIGIN을 설정해야 합니다. 없으면 초대 링크, cookie 보안 속성, WebSocket origin 검증이 실제 도메인과 맞지 않을 수 있습니다.

인증 코드와 로그인

Feishu custom bot

Feishu 설정이 하나라도 있으면 모든 로그인 인증 코드는 Feishu로만 전송되며 설정 누락이나 전달 실패 시 이메일로 fallback하지 않습니다. 두 변수가 모두 필요합니다. 워크스페이스 초대 이메일은 계속 Resend 또는 SMTP를 사용합니다.

변수기본값설명
MULTICA_VERIFICATION_FEISHU_WEBHOOK_URL비어 있음모든 로그인 코드에 사용하는, 인증 정보를 포함한 custom-bot webhook URL
MULTICA_VERIFICATION_FEISHU_SIGN_SECRET비어 있음Feishu timestamp signature에 필요한 secret

Resend

변수기본값설명
RESEND_API_KEY비어 있음설정하면 Resend 활성화
RESEND_FROM_EMAIL[email protected]발신 주소. 인증된 도메인에 속해야 함

SMTP

Feishu 설정이 둘 다 비어 있을 때 SMTP_HOST가 비어 있지 않으면 SMTP가 Resend보다 우선합니다.

변수기본값설명
SMTP_HOST비어 있음SMTP host. 설정하면 SMTP 활성화
SMTP_PORT25일반적인 값: 25, 587, 465
SMTP_USERNAME비어 있음사용자 이름. 익명 relay에서는 비워 둠
SMTP_PASSWORD비어 있음비밀번호
SMTP_FROM_EMAILRESEND_FROM_EMAIL로 fallbackEnvelope From과 이메일 From
SMTP_TLSstarttlsimplicit, smtps, ssl은 암시적 TLS를 의미하며 465에서는 자동 활성화
SMTP_TLS_INSECUREfalse인증서 검증 건너뛰기. 신뢰할 수 있는 내부 네트워크에서만 사용
SMTP_EHLO_NAMEhost 이름엄격한 relay에서 요구하는 EHLO/FQDN

Google OAuth

변수기본값설명
GOOGLE_CLIENT_ID비어 있음Google OAuth client ID
GOOGLE_CLIENT_SECRET비어 있음Google OAuth client secret
GOOGLE_REDIRECT_URIhttp://localhost:3000/auth/callbackGoogle Console의 callback 주소와 완전히 같아야 함

가입 범위

변수기본값설명
ALLOW_SIGNUPtrueallowlist가 없을 때 새 계정 생성 허용 여부
ALLOWED_EMAILS비어 있음가입을 허용할 전체 이메일 주소, 쉼표로 구분
ALLOWED_EMAIL_DOMAINS비어 있음가입을 허용할 이메일 도메인, 쉼표로 구분
DISABLE_WORKSPACE_CREATIONfalse모든 사용자의 새 워크스페이스 생성을 금지. owner/admin 예외 없음
MULTICA_DEV_VERIFICATION_CODE비어 있음production이 아닌 환경에서 사용하는 고정 6자리 테스트 인증 코드

allowlist의 정확한 판단 순서는 로그인과 가입을 참고하세요.

첨부 파일 저장소

S3_BUCKET을 설정하지 않으면 Multica가 로컬 디스크를 사용합니다.

S3 또는 호환 저장소

변수기본값설명
S3_BUCKET비어 있음Bucket 이름. 전체 hostname을 입력하지 않음
S3_REGIONus-west-2Bucket region
AWS_ACCESS_KEY_IDSDK 기본 자격 증명 chain정적 access key
AWS_SECRET_ACCESS_KEYSDK 기본 자격 증명 chain정적 secret key
AWS_ENDPOINT_URL비어 있음MinIO 같은 S3 호환 endpoint
S3_USE_PATH_STYLE사용자 지정 endpoint에서는 truepath-style 주소 사용 여부
ATTACHMENT_DOWNLOAD_MODEautoauto, cloudfront, presign, proxy 중 하나
ATTACHMENT_DOWNLOAD_URL_TTL30m서명된 다운로드 주소의 유효 기간

내부 네트워크의 MinIO처럼 브라우저에서 endpoint에 직접 접근할 수 없다면 ATTACHMENT_DOWNLOAD_MODE=proxy를 사용하세요.

로컬 디스크

변수기본값설명
LOCAL_UPLOAD_DIR./data/uploads파일과 metadata를 저장할 디렉터리. persistent volume 필요
LOCAL_UPLOAD_BASE_URL비어 있음선택적인 공개 base URL. 비워 두면 사이트 내부 상대 주소 반환

CloudFront

변수설명
CLOUDFRONT_DOMAINCDN 도메인
CLOUDFRONT_KEY_PAIR_IDCloudFront key pair ID
CLOUDFRONT_PRIVATE_KEY전체 private key
CLOUDFRONT_PRIVATE_KEY_SECRETSecrets Manager에서 private key를 읽을 때 사용

Redis와 rate limit

변수기본값설명
REDIS_URL비어 있음공유 rate limit, 실시간 이벤트, token cache에 사용. 설정하지 않으면 실시간 이벤트와 초대 제한은 프로세스 메모리로 fallback하고 인증 rate limit은 비활성화
REDIS_DISABLE_CLIENT_NAMEfalse관리형 Redis가 CLIENT SETNAME을 금지하면 true로 설정
RATE_LIMIT_AUTH5IP당 1분에 인증 코드 전송 또는 Google 로그인 시작 허용 횟수
RATE_LIMIT_AUTH_VERIFY20IP당 1분에 인증 코드 검증 허용 횟수
RATE_LIMIT_INVITATION_ACTOR_10M10초대자별 10분 슬라이딩 윈도 내 워크스페이스 초대 생성 횟수. 0이면 이 제한을 비활성화
RATE_LIMIT_INVITATION_WORKSPACE_24H50워크스페이스의 모든 관리자가 24시간 슬라이딩 윈도 내 생성할 수 있는 총 초대 수. 0이면 이 제한을 비활성화
RATE_LIMIT_INVITATION_RECIPIENT_24H6정규화된 동일 수신 이메일이 워크스페이스 전체에서 24시간 슬라이딩 윈도 내 받을 수 있는 초대 수. 0이면 이 제한을 비활성화
RATE_LIMIT_TRUSTED_PROXIES비어 있음X-Forwarded-For를 제공하도록 허용할 proxy CIDR, 쉼표로 구분
MULTICA_TRUSTED_PROXIES비어 있음자동화 webhook과 실시간 연결에서 사용할 신뢰 proxy CIDR

reverse proxy 뒤에 배포한다면 실제 proxy 네트워크를 입력해야 합니다. 모든 출처를 그대로 신뢰하지 마세요. 클라이언트가 전달 IP를 위조할 수 있습니다.

인증 rate limit에는 REDIS_URL이 필요하며, 설정하지 않으면 시작 로그에 인증 rate limit이 비활성화되었다고 표시됩니다. 초대 제한은 Redis 없이도 프로세스 메모리에서 동작하고, Redis를 설정하면 여러 replica가 할당량을 공유합니다. 설정된 Redis를 일시적으로 사용할 수 없으면 인증 rate limit은 fail-open하지만, 초대 생성은 보호 없이 이메일을 보내지 않고 재시도 가능한 503을 반환합니다.

외부 연동

연동변수설명
GitHubGITHUB_APP_SLUGGitHub App slug
GitHubGITHUB_WEBHOOK_SECRETWebhook HMAC 및 연결 state 서명 키
GitHubGITHUB_APP_IDPR 카드의 CI 상태, merge 가능 여부, "GitHub에서 선택" 저장소에 필요
GitHubGITHUB_APP_PRIVATE_KEYApp ID와 짝을 이루는 전체 PEM private key. 용도는 위와 같음
FeishuMULTICA_LARK_SECRET_KEYbase64로 인코딩한 32바이트 자격 증명 암호화 키
SlackMULTICA_SLACK_SECRET_KEYbase64로 인코딩한 32바이트 token 암호화 키
TelegramMULTICA_TELEGRAM_SECRET_KEYbase64로 인코딩한 32바이트 Bot token 암호화 키
ComposioCOMPOSIO_API_KEYComposio 도구 연결 활성화
ComposioCOMPOSIO_CALLBACK_BASE_URLcallback API 주소. MULTICA_PUBLIC_URL로 fallback 가능
ComposioCOMPOSIO_STATE_SECRETOAuth state 서명 키. JWT_SECRET에서 파생 가능
자체 호스팅 GitMULTICA_VCS_INTEGRATION_ENABLEDForgejo/Gitea/GitLab 연동 스위치. compose에서는 기본 활성화
자체 호스팅 GitMULTICA_VCS_SECRET_KEYbase64로 인코딩한 32바이트 암호화 키(openssl rand -base64 32). 없으면 전체 기능을 사용할 수 없음
PluginsMULTICA_PLUGIN_SECRET_KEY저장된 secret과 surface 실행 URL을 암호화하는 base64 인코딩 32바이트 키
PluginsMULTICA_PLUGIN_SURFACE_ORIGIN백엔드로 라우팅되는 쿠키 없는 전용 origin. app/API origin과 달라야 하며 Host를 보존해야 함
PluginsMULTICA_PLUGIN_API_URL버전을 포함한 Plugin Public API의 전체 Base URL(예: https://plugin-api.example.com/v1). 설정하지 않으면 MULTICA_PUBLIC_URL + /v1 사용
PluginsMULTICA_PLUGIN_DIR개발 중 로컬 plugin bundle을 게시하는 선택적 절대 디렉터리

GITHUB_APP_ID와 private key를 설정하지 않아도 PR 연결, 미러링, merge 시 done 전환은 정상적으로 작동합니다. 다만 카드에 CI와 merge 가능 상태가 표시되지 않고 "GitHub에서 선택" 저장소 메뉴도 비활성화됩니다.

설정 단계는 GitHub 연동, Feishu Bot, Slack Bot, Telegram Bot을 참고하세요.

서버 측 LLM

이 설정 그룹은 대화 제목 같은 서버 측 보조 생성 기능에 사용됩니다. 에이전트가 작업을 실행할 때 사용하는 AI 코딩 도구의 자격 증명이 아닙니다.

변수기본값설명
MULTICA_LLM_API_KEY비어 있음OpenAI 호환 API key
MULTICA_LLM_BASE_URL비어 있음OpenAI 호환 endpoint
MULTICA_LLM_DEFAULT_MODELgpt-5.6-luna요청에 모델이 지정되지 않았을 때 사용
MULTICA_LLM_MAX_RETRIES2호출당 재시도 상한. 0은 재시도 비활성화, 15는 최대 N회

MULTICA_LLM_MAX_RETRIES는 재시도 정책의 유일한 설정 소스입니다. 설정하지 않으면 기본값 2회, 0이면 호출당 요청을 정확히 한 번만 보내고, 1–5면 재시도를 최대 그 횟수까지만 합니다. 할당량이 아니라 상한입니다. 재시도 대상 실패만 이를 소모하며, 성공하거나 호출자 자신의 데드라인에 걸리면 더 일찍 끝납니다. 그 밖의 값(음수, 숫자가 아닌 값, 5 초과)은 조용히 보정되지 않고 시작에 실패합니다. 상한은 지연 예산입니다. 백오프는 0.5초에서 시작해 8초 상한까지 두 배씩 늘어나므로, 더 큰 예산은 호출자 자신의 타임아웃을 넘겨 재시도 가능한 실패를 타임아웃으로 바꿉니다. 재시도는 연결 실패와 HTTP 408, 409, 429, 5xx를 대상으로 하며 그 외 4xx는 그대로 반환됩니다. 서버는 시작 시 유효한 정책을 llm retry policy로 기록하며 해당 줄에는 자격 증명이 포함되지 않습니다.

이 레이어를 사용하는 기능은 두 가지이며, 둘 다 설정한 endpoint로 채팅 내용을 전송합니다.

  • 대화 제목 자동 생성 — 새 채팅 세션에서 사용자가 보낸 첫 메시지를 그대로 전송합니다. 첨부 파일은 포함되지 않습니다.
  • 후속 질문(에이전트 답변 아래의 버튼) — 대화의 마지막 부분을 전송합니다. 최대 6개 메시지이며, 대상 답변은 3000자, 그보다 오래된 메시지는 각각 800자로 제한됩니다.

API key와 base URL이 모두 비어 있으면 이 레이어가 꺼지고 업스트림 요청을 전혀 보내지 않습니다. 위 두 기능 모두 아무것도 전송하지 않습니다. 이 레이어가 채팅 내용을 배포 환경 밖으로 보내면 안 되는 정책이라면 이것이 지원되는 구성입니다. 세션은 클라이언트가 첫 메시지에서 만든 제목을 그대로 사용하고, 후속 질문 버튼은 표시되지 않으며, 나머지 기능은 영향을 받지 않습니다.

이는 보조 생성 레이어에만 해당합니다. 에이전트 실행은 별도의 데이터 경로입니다. 에이전트가 채팅에 답변할 때 데몬은 해당 에이전트의 AI 코딩 도구를 그 도구 자체의 자격 증명으로 실행하며, 위의 MULTICA_LLM_* 설정을 도구에 전달하지 않습니다. (에이전트 자체에 필요한 작업 범위의 Multica 연결 변수는 데몬이 별도로 주입합니다.) 위 변수를 비워 두어도 이 경로에는 영향이 없으므로, 에이전트의 런타임 설정에서 관리하세요.

데몬 설정

아래 변수는 API 컨테이너가 아니라 에이전트를 실행하는 컴퓨터에서 읽습니다.

변수기본값설명
MULTICA_SERVER_URLws://localhost:8080/wsMultica API / WebSocket 주소. http(s)도 허용
MULTICA_DAEMON_DEVICE_NAMEhost 이름런타임 목록의 기기 이름
MULTICA_AGENT_RUNTIME_NAMELocal Agent런타임 표시 이름
MULTICA_DAEMON_POLL_INTERVAL30swakeup 이벤트가 없을 때 작업 polling 간격
MULTICA_DAEMON_HEARTBEAT_INTERVAL15sheartbeat 간격
MULTICA_DAEMON_MAX_CONCURRENT_TASKS20데몬 하나의 동시 작업 상한
MULTICA_AGENT_TIMEOUT0단일 실행의 절대 시간 제한. 0은 제한 없음
MULTICA_AGENT_IDLE_WATCHDOG2h출력과 도구 실행이 모두 없을 때의 무응답 상한. 0이면 watchdog 전체가 비활성화됩니다
MULTICA_AGENT_TOOL_WATCHDOGMULTICA_AGENT_IDLE_WATCHDOG와 동일단일 도구 호출이 계속 무응답인 시간 상한. 모델보다 도구에 더 여유를 주고 싶을 때만 따로 설정하며, 0이면 도구 실행 중에는 강제 종료하지 않습니다
MULTICA_OPENCODE_IDLE_WATCHDOG10mOpenCode 전용 무응답 기준값
MULTICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUTMULTICA_AGENT_IDLE_WATCHDOG와 동일Codex 의미 활동 없음 기준값. Codex 자체 타이머는 도구 실행 중인지 알 수 없으므로 별도의 짧은 상한 대신 idle / tool 예산 중 큰 값을 따릅니다
MULTICA_CODEX_FIRST_TURN_TIMEOUT0Codex 첫 턴 무진행 상한의 명시적 재정의; 0 은 기본값 유지. 실제 첫 턴 대기는 여전히 MULTICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUT 및 전체 실행 타임아웃으로 제한됨 — MULTICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUT 을 이 값보다 엄격히 크게(여유를 두고) 설정해야 하며, 그렇지 않으면 대기가 그 값으로 잘리고 모델 카탈로그 시작 재시도가 건너뛰어짐. 값이 같으면 충분하지 않음: 의미 타이머가 먼저 시작되므로 값이 같을 때도 재시도가 손실될 수 있음
MULTICA_CODEX_HANDSHAKE_TIMEOUT30s, thread/start·thread/resume: 60sCodex app-server 시작 handshake 상한. 명시적으로 설정한 값은 두 예산을 모두 일괄 재정의합니다
MULTICA_DAEMON_AUTO_UPDATECloud true, 자체 호스팅 falseCLI 자동 확인 및 업데이트 여부
MULTICA_DAEMON_AUTO_UPDATE_INTERVAL6h업데이트 확인 간격
MULTICA_DAEMON_AUTO_RELOADtrue외부에서 교체된 multica 바이너리(brew upgrade, 재다운로드, 로컬 빌드)로 재시작할지 여부. MULTICA_DAEMON_AUTO_UPDATE와 독립적
MULTICA_WORKSPACES_ROOT~/multica_workspaces작업 작업 디렉터리의 루트
MULTICA_AGENT_TEMP_BASE/tmp(Linux/macOS)Linux/macOS 전용. 작업별 비공개 임시 디렉터리의 상위 디렉터리입니다. 기존의 쓰기 가능한 절대 경로여야 하며, 값이 잘못되면 /tmp로 대체하지 않고 작업 시작에 실패합니다. 짧은 경로를 선택하세요. 하위 도구가 그 아래에 AF_UNIX 소켓을 만들 수 있으며 sun_path 제한은 Linux에서 108바이트, macOS에서 104바이트입니다
MULTICA_KEEP_ENV_AFTER_TASKfalse디버깅을 위해 작업 디렉터리 유지

데몬이 에이전트 작업에 주입하는 내부 컨텍스트는 작업 런타임 환경을 참고하세요.

각 AI 코딩 도구는 MULTICA_<PROVIDER>_PATH로 명령 경로를 덮어쓸 수 있으며 모델 재정의를 지원하는 도구는 MULTICA_<PROVIDER>_MODEL도 사용할 수 있습니다. QwenPaw와 MiniMax Code에는 모델 변수가 없고 MiniMax Code의 경로 변수는 MULTICA_MCODE_PATH입니다. 자세한 내용은 AI 코딩 도구 비교를 참고하세요. DeepSeek Harness는 MULTICA_DSH_PATHMULTICA_DSH_MODEL을 지원합니다(값은 dsh 모델 카탈로그의 모델 ID, 예: deepseek-official/deepseek-chat). ZeroClaw는 MULTICA_ZEROCLAW_PATH를 지원하지만 모델 변수는 없습니다. 모델은 ZeroClaw의 에이전트 설정에서 관리합니다. 컴퓨터 전체 기본 인수 MULTICA_<PROVIDER>_ARGS는 현재 Claude Code, Codex, CodeBuddy, Qwen Code, QwenPaw 다섯 도구를 지원합니다. 해당 변수는 MULTICA_CLAUDE_ARGS, MULTICA_CODEX_ARGS, MULTICA_CODEBUDDY_ARGS, MULTICA_QWEN_ARGS, MULTICA_QWENPAW_ARGS입니다. 예시:

MULTICA_CLAUDE_PATH=/opt/bin/claude
MULTICA_CLAUDE_ARGS=--max-turns 40

우선순위는 명령줄 flag → 환경 변수 → ~/.multica/config.json → 내장 기본값입니다. watchdog 동작은 데몬과 런타임을 참고하세요.

데몬 설정 영속화

자주 사용하는 데몬 측 설정은 shell 환경 변수에 의존하지 않고 ~/.multica/config.json에 기록할 수도 있습니다. 이름 있는 profile의 설정 파일은 ~/.multica/profiles/<name>/config.json에 있습니다.

multica config set poll_interval 10s
multica config show

지원되는 key:

key기본값설명
server_urlws://localhost:8080/wsMultica API / WebSocket 주소
app_url비어 있음브라우저 로그인에 사용할 Web 주소
workspace_id비어 있음기본 워크스페이스
device_namehost 이름런타임 목록의 기기 이름
runtime_nameLocal Agent런타임 표시 이름
workspaces_root~ 아래 profile별 경로작업 작업 디렉터리의 루트
max_concurrent_tasks20동시 작업 상한. 0 또는 빈 값은 설정되지 않음을 의미
poll_interval30s작업 polling 간격
heartbeat_interval15sheartbeat 간격
agent_timeout제한 없음단일 실행의 절대 시간 제한
codex_semantic_inactivity_timeout파생Codex 의미 활동 없음 기준값. 설정하지 않으면 idle과 tool watchdog 예산 중 큰 값을 따르고, tool 예산이 0이면 idle 예산으로 되돌아갑니다. Codex 자체의 10m은 watchdog 전체를 비활성화했을 때만 유지됩니다
codex_handshake_timeout30s, thread/start·thread/resume: 60sCodex app-server 시작 handshake 상한. 명시적으로 설정한 값은 두 예산을 모두 일괄 재정의합니다
disable_auto_update환경을 따름true는 자동 업데이트를 끔. false는 로컬 덮어쓰기를 지우고 환경 변수 또는 기본값으로 복귀
auto_update_check_interval6h업데이트 확인 간격
disable_auto_reload환경을 따름true는 디스크에서 교체된 바이너리 추적을 끔. false는 로컬 덮어쓰기를 지움. disable_auto_update와 별도로 해석됨

값에는 다음 규칙이 적용됩니다.

  • duration key는 양의 Go duration(예: 10s, 2h)을 허용하며 0s와 음수는 거부합니다. 유일한 예외는 agent_timeout입니다. 0s가 유효하며 실행 시간 제한을 명시적으로 끕니다.
  • 빈 문자열을 전달하면 저장된 값을 지우고 환경 변수 또는 내장 기본값으로 돌아갑니다. 예: multica config set poll_interval ""
  • max_concurrent_tasks는 0 이상의 정수여야 합니다.
  • 상대 workspaces_root 값은 저장할 때 절대 경로로 변환됩니다.

관측과 통계

변수기본값설명
ANALYTICS_DISABLEDfalsetrue로 설정하면 PostHog 전송 비활성화
POSTHOG_API_KEY비어 있음설정하지 않으면 통계 전송 비활성화. 자체 PostHog 프로젝트 연결 시 입력
POSTHOG_HOSThttps://us.i.posthog.comPostHog 주소
METRICS_ADDR비어 있음Prometheus metrics listen 주소. 비어 있으면 시작하지 않음
REALTIME_METRICS_TOKEN비어 있음/health/realtime을 보호하는 bearer token

다음 단계