Multica Docs

Ortam değişkenleri

Multica'yı kendi sunucunuzda barındırmak için ortak sunucu, depolama, entegrasyon ve runtime yapılandırması.

Multica, ortam değişkenlerini süreç başlangıcında okur. Birini değiştirdikten sonra, etkilenen API, web veya daemon sürecini yeniden başlatın. Docker Compose'un docker compose restart komutu .env'i yeniden okumaz; değişikliklerin etkili olması için container'ları up -d ile yeniden oluşturun.

Bu sayfa yalnızca dağıtıma yönelik yapılandırmayı listeler; test değişkenleri ve iç çalıştırma değişkenleri burada ele alınmaz. Bu gruplandırılmış bir referanstır — tam dağıtım adımları için bkz. kendi sunucunuzda hızlı başlangıç.

Asgari üretim yapılandırması

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

Ayrıca bir e-posta hizmeti seçmeniz gerekir, aksi hâlde doğrulama kodları ve davetler yalnızca sunucu günlüğüne yazılır.

JWT_SECRET üretimde zorunludur: APP_ENV=production iken arka uç, değer boş veya bilinen bir yer tutucu olduğunda başlamayı reddeder (openssl rand -hex 32 ile bir tane üretin). MULTICA_DEV_VERIFICATION_CODE'u ayarlamayın.

API ve veritabanı

DeğişkenVarsayılanAçıklama
DATABASE_URLyerel multica veritabanıPostgreSQL bağlantı dizesi
DATABASE_MAX_CONNS25API süreci başına en fazla veritabanı bağlantısı
DATABASE_MIN_CONNS5Her API sürecinin koruduğu minimum bağlantı
DATABASE_REPLICA_URLboşİsteğe bağlı, salt okunur PostgreSQL replika bağlantı dizesi; yeni bağlantılar salt okunur olarak doğrulanır, işlerin kodda nihai-tutarlı okumaya açıkça katılması gerekir
DATABASE_REPLICA_MAX_CONNS10API süreci başına en fazla replika bağlantısı
DATABASE_REPLICA_MIN_CONNS0API süreci başına minimum replika bağlantısı
MULTICA_DATABASE_STARTUP_TIMEOUT3mMigrasyon ve API başlangıcının paylaştığı konteyner düzeyi yeniden deneme bütçesi; her aşama için tek seferde hızlı başarısızlık istiyorsanız 0 yapın
MULTICA_DATABASE_CONNECT_TIMEOUT5sHer başlangıç bağlantı denemesi için yedek zaman aşımı; yerel pgx connect_timeout, PGCONNECT_TIMEOUT veya servis ayarları önceliklidir
PORT8080API dinleme portu
JWT_SECRETüretimde zorunluGiriş JWT'leri ve bazı imzalama akışları için sır; üretim, boş veya bilinen yer tutucularda başlamayı reddeder
APP_ENVboşÜretimde production olarak ayarlayın
AUTH_TOKEN_TTL720h (30 gün)Tarayıcı JWT'lerinin ve çerezlerinin ömrü; bir Go süresi veya pozitif bir saniye tamsayısı kabul eder
LOG_LEVELuygulama varsayılanıGünlük düzeyi
MULTICA_SHUTDOWN_HOLD_DURATION0Zarif kapanma başlamadan önce bir sonlandırma sinyalinden sonra ne kadar beklenileceği
MULTICA_RUNTIME_RECONNECT_GRACE3hÇevrimdışı bir runtime'ın, devam eden çalıştırmaları başarısız sayılmadan önce yeniden bağlanabileceği azami süre; 150s'nin altındaki değerler bu eşiğe yükseltilir

Kubernetes'te bir kapanma bekletmesi ayarlarken, terminationGracePeriodSeconds, bekletme süresi artı gerçek kapanmanın ihtiyaç duyduğu süreyi aşmalıdır.

Birincil ve replika bağlantı sınırları birbirinden bağımsızdır; ikisinin toplamını her API süreci için PostgreSQL kümesinin bağlantı tavanına göre bütçeleyin. Replika bağlantıları, yükseltme (promotion) sonrası salt okunur doğrulamayı tazelemek için varsayılan olarak beş dakikada bir geri dönüştürülür. Replika bağlantı hataları sessizce birincile döner ve kısa, pasif bir devre kesici açar; arka planda ek bir veritabanı yoklaması eklenmez. Replika okumalarının uygulama tarafından zorlanan bir gecikme sınırı yoktur, bu yüzden gecikmeyi veritabanı katmanında izleyin ve tutarlılığa duyarlı okumaları birincilde tutun.

Herkese açık URL'ler ve tarayıcı erişimi

DeğişkenVarsayılanAçıklama
FRONTEND_ORIGINboşKullanıcıların ziyaret ettiği ön uç kaynağı; CORS, çerezler ve davet bağlantıları için kullanılır
MULTICA_APP_URLFRONTEND_ORIGIN'e dönerKullanıcının erişebileceği web URL'si; CLI girişi ve hesap bağlama URL'leri bunu kullanır
MULTICA_PUBLIC_URLboşHerkese açık API URL'si; webhook URL'leri ve runtime bağlantı talimatları için kullanılır
MULTICA_DAEMON_SERVER_URLboş — MULTICA_PUBLIC_URL'e, sonra MULTICA_APP_URL / FRONTEND_ORIGIN'e dönerAPI sürecinin multica setup self-host çıktısına eklediği sunucu URL'si; daemon'lar API'ye herkese açık webhook URL'sinden farklı bir adresten erişiyorsa ayarlayın
CORS_ALLOWED_ORIGINSboşEk izin verilen HTTP kaynakları (virgülle ayrılmış)
ALLOWED_ORIGINSCORS / ön uç kaynaklarına dönerWebSocket kaynak izin listesi (virgülle ayrılmış)
COOKIE_DOMAINboşÖn uç ve API farklı host'lar kullandığında ve tarayıcı doğrudan API alan adıyla konuştuğunda zorunludur; tek alan adlı dağıtımlarda boş bırakın

MULTICA_DAEMON_SERVER_URL, kimlik doğrulaması olmayan /api/config uç noktası tarafından döndürülür ve istemcilere görünür. Bunu herkese açık yapılandırma olarak ele alın; içine kimlik bilgisi, token veya başka bir sır koymayın.

Ön uç ve API farklı host'larda çalıştığında ve tarayıcı doğrudan API alan adıyla konuştuğunda, COOKIE_DOMAIN'i ayarlamalısınız — aksi hâlde tarayıcı CSRF çerezini okuyamaz: okumalar sorunsuz çalışırken her yazma isteği 403 CSRF validation failed döner. Her iki host'u da kapsayan en dar üst alan adını kullanın (.example.com yerine .agent.example.com). Bu, giriş oturumu çerezini o alan adı altındaki her host'a yayar, bu yalnızca o host'ların hepsi aynı güvenilen taraf tarafından işletildiğinde kabul edilebilir. Değiştirdikten sonra, her iki host'taki eski çerezleri temizleyin ve yeniden giriş yapın. Kendi sunucunuzda hızlı başlangıç rehberindeki aynı-kaynak tarifini izliyorsanız (tarayıcı yalnızca uygulama alan adını ziyaret eder), boş bırakın. Bir IP adresi kullanmayın — tarayıcılar Domain'i bir IP olan çerezleri yok sayar.

Kendi sunucunuzda barındırılan dağıtımlar FRONTEND_ORIGIN'i ayarlamalıdır. Ayarlanmazsa, davet bağlantıları, çerez güvenlik nitelikleri ve WebSocket kaynak kontrolleri gerçek alan adınızla uyuşmayabilir.

E-posta ve giriş

Resend

DeğişkenVarsayılanAçıklama
RESEND_API_KEYboşAyarlamak Resend'i etkinleştirir
RESEND_FROM_EMAILnoreply@multica.aiGönderen adresi; doğrulanmış bir alan adına ait olmalı

SMTP

SMTP_HOST boş olmadığında SMTP, Resend'e göre önceliklidir.

DeğişkenVarsayılanAçıklama
SMTP_HOSTboşSMTP host'u; ayarlamak SMTP'yi etkinleştirir
SMTP_PORT25Yaygın değerler: 25, 587, 465
SMTP_USERNAMEboşKullanıcı adı; anonim relay'ler için boş bırakın
SMTP_PASSWORDboşParola
SMTP_FROM_EMAILRESEND_FROM_EMAIL'e dönerZarf From ve mesaj From'u
SMTP_TLSstarttlsimplicit, smtps veya ssl anlık (implicit) TLS anlamına gelir; port 465 bunu otomatik etkinleştirir
SMTP_TLS_INSECUREfalseSertifika doğrulamasını atlar; yalnızca güvenilen iç ağlar için
SMTP_EHLO_NAMEmakine hostname'iKatı relay'lerin gerektirdiği EHLO/FQDN

Google OAuth

DeğişkenVarsayılanAçıklama
GOOGLE_CLIENT_IDboşGoogle OAuth istemci kimliği
GOOGLE_CLIENT_SECRETboşGoogle OAuth istemci sırrı
GOOGLE_REDIRECT_URIhttp://localhost:3000/auth/callbackGoogle Console'daki callback URL'siyle tam olarak eşleşmeli

Kayıt kapsamı

DeğişkenVarsayılanAçıklama
ALLOW_SIGNUPtrueHerhangi bir izin listesi yapılandırılmadığında yeni hesapların oluşturulup oluşturulamayacağı
ALLOWED_EMAILSboşKayıt olmasına izin verilen tam e-posta adresleri (virgülle ayrılmış)
ALLOWED_EMAIL_DOMAINSboşKayıt olmasına izin verilen e-posta alan adları (virgülle ayrılmış)
DISABLE_WORKSPACE_CREATIONfalseTüm kullanıcıların çalışma alanı oluşturmasını engeller; sahip/yönetici istisnası yoktur
MULTICA_DEV_VERIFICATION_CODEboşÜretim dışı ortamlar için sabit 6 haneli test kodu

İzin listesi değerlendirme sırasının tamamı için bkz. Giriş ve kayıt.

Ek depolama

S3_BUCKET ayarlanmadığında, Multica yerel diski kullanır.

S3 veya uyumlu depolama

DeğişkenVarsayılanAçıklama
S3_BUCKETboşBucket adı; tam hostname'i kullanmayın
S3_REGIONus-west-2Bucket'ın bulunduğu bölge
AWS_ACCESS_KEY_IDSDK varsayılan kimlik bilgisi zinciriStatik erişim anahtarı
AWS_SECRET_ACCESS_KEYSDK varsayılan kimlik bilgisi zinciriStatik sır anahtarı
AWS_ENDPOINT_URLboşMinIO gibi S3 uyumlu bir uç nokta
S3_USE_PATH_STYLEözel bir uç noktayla trueYol-stili adreslemenin kullanılıp kullanılmayacağı
ATTACHMENT_DOWNLOAD_MODEautoauto, cloudfront, presign veya proxy
ATTACHMENT_DOWNLOAD_URL_TTL30mİmzalı indirme URL'lerinin ömrü

Uç nokta — örneğin dahili bir MinIO — tarayıcıdan erişilebilir olmadığında ATTACHMENT_DOWNLOAD_MODE=proxy kullanın.

Yerel disk

DeğişkenVarsayılanAçıklama
LOCAL_UPLOAD_DIR./data/uploadsDosyalar ve meta veri için dizin; kalıcı bir birim gerektirir
LOCAL_UPLOAD_BASE_URLboşİsteğe bağlı herkese açık taban URL; boş olduğunda, uygulama içi göreli URL'ler döner

CloudFront

DeğişkenAçıklama
CLOUDFRONT_DOMAINCDN alan adı
CLOUDFRONT_KEY_PAIR_IDCloudFront anahtar çifti kimliği
CLOUDFRONT_PRIVATE_KEYTam özel anahtar
CLOUDFRONT_PRIVATE_KEY_SECRETÖzel anahtarı Secrets Manager'dan okurken kullanın

Redis ve hız sınırlama

DeğişkenVarsayılanAçıklama
REDIS_URLboşPaylaşılan hız sınırlaması, gerçek zamanlı olaylar ve token önbelleği için kullanılır; ayarlanmadığında gerçek zamanlı olaylar ve davet sınırları işlem-içi belleğe döner, kimlik doğrulama hız sınırlaması ise kapalıdır
REDIS_DISABLE_CLIENT_NAMEfalseYönetilen bir Redis CLIENT SETNAME'i engellediğinde true yapın
RATE_LIMIT_AUTH5Bir doğrulama kodu göndermek veya Google girişini başlatmak için IP başına dakikada istek
RATE_LIMIT_AUTH_VERIFY20IP başına dakikada kod doğrulaması
RATE_LIMIT_INVITATION_ACTOR_10M10Her davet edenin 10 dakikalık kayan pencerede oluşturabileceği çalışma alanı daveti; 0 bu sınırı devre dışı bırakır
RATE_LIMIT_INVITATION_WORKSPACE_24H50Tüm yöneticilerin çalışma alanı başına 24 saatlik kayan pencerede oluşturabileceği davet; 0 bu sınırı devre dışı bırakır
RATE_LIMIT_INVITATION_RECIPIENT_24H6Normalleştirilmiş bir alıcı e-postasının çalışma alanları genelinde 24 saatlik kayan pencerede alabileceği davet; 0 bu sınırı devre dışı bırakır
RATE_LIMIT_TRUSTED_PROXIESboşX-Forwarded-For sağlamasına izin verilen virgülle ayrılmış proxy CIDR'leri
MULTICA_TRUSTED_PROXIESboşOtomasyon webhook'ları ve gerçek zamanlı bağlantılar için güvenilen proxy CIDR'leri

Bir ters proxy'nin arkasındaki dağıtımlar gerçek proxy aralıklarını listelemelidir. Tüm kaynaklara körü körüne güvenmeyin, aksi hâlde istemciler yönlendirilmiş IP'leri sahteleyebilir.

Kimlik doğrulama hız sınırları REDIS_URL gerektirir; olmadan, başlangıç günlüğü kimlik doğrulama hız sınırlamasının devre dışı olduğunu belirtir. Davet sınırları Redis olmadan yine işlem-yerel bellekte çalışır ve Redis yapılandırıldığında replikalar arasında paylaşılır hâle gelir. Yapılandırılmış Redis geçici olarak erişilemez hâle gelirse, kimlik doğrulama hız sınırlaması işlem-yoktur şekilde açılırken, davet oluşturma korumasız e-posta göndermek yerine yeniden denenebilir bir 503 döner.

Dış entegrasyonlar

EntegrasyonDeğişkenAçıklama
GitHubGITHUB_APP_SLUGGitHub App slug'ı
GitHubGITHUB_WEBHOOK_SECRETWebhook HMAC ve bağlantı-durumu imzalama sırrı
GitHubGITHUB_APP_IDPR kartlarında CI durumu ve birleştirilebilirlik ile "GitHub'dan seç" depo seçici için gerekli
GitHubGITHUB_APP_PRIVATE_KEYApp ID ile eşleştirilmiş tam PEM özel anahtarı; yukarıdakiyle aynı kullanımlar
LarkMULTICA_LARK_SECRET_KEYBase64 kodlu 32 bayt kimlik bilgisi şifreleme anahtarı
SlackMULTICA_SLACK_SECRET_KEYBase64 kodlu 32 bayt token şifreleme anahtarı
TelegramMULTICA_TELEGRAM_SECRET_KEYBase64 kodlu 32 bayt Bot token şifreleme anahtarı
ComposioCOMPOSIO_API_KEYComposio araç bağlantılarını etkinleştirir
ComposioCOMPOSIO_CALLBACK_BASE_URLCallback API URL'si; MULTICA_PUBLIC_URL'e dönebilir
ComposioCOMPOSIO_STATE_SECRETOAuth durum imzalama sırrı; JWT_SECRET'ten türetilebilir
Kendi sunucunuzda barındırılan GitMULTICA_VCS_INTEGRATION_ENABLEDForgejo/Gitea/GitLab entegrasyon anahtarı; compose'da varsayılan olarak etkin
Kendi sunucunuzda barındırılan GitMULTICA_VCS_SECRET_KEYBase64 kodlu 32 bayt şifreleme anahtarı (openssl rand -base64 32); bu olmadan özellik tamamen kullanılamaz
EklentilerMULTICA_PLUGIN_SECRET_KEYSaklanan sırlar ve şifreli yüzey başlatma URL'leri için Base64 kodlu 32 bayt anahtar
EklentilerMULTICA_PLUGIN_SURFACE_ORIGINBu arka uca yönlendirilen, çerezsiz özel bir tarayıcı kaynağı; uygulama/API kaynaklarından farklı olmalı ve Host'u korumalı
EklentilerMULTICA_PLUGIN_API_URLhttps://plugin-api.example.com/v1 gibi, sürümlenmiş tam Eklenti Herkese Açık API taban URL'si; MULTICA_PUBLIC_URL + /v1'e döner
EklentilerMULTICA_PLUGIN_DIRGeliştirme sırasında yerel eklenti paketlerini yayımlamak için kullanılan isteğe bağlı mutlak dizin

GITHUB_APP_ID ve özel anahtar olmadan, PR'lar yine de normal şekilde bağlanır, yansıtılır ve birleştirmede-bitir'i tetikler, ama kartlar CI veya birleştirilebilirlik durumu göstermez ve "GitHub'dan seç" depo girişi devre dışıdır.

Kurulum adımları için bkz. GitHub entegrasyonu, Lark bot, Slack bot ve Telegram bot.

Sunucu tarafı LLM

Bu grup, konuşma başlıkları gibi sunucu tarafı yardım üretimini yapılandırır; agent'ların çalıştırmaları yürütmek için kullandığı yapay zekâ kodlama aracı kimlik bilgileri değildir.

DeğişkenVarsayılanAçıklama
MULTICA_LLM_API_KEYboşOpenAI uyumlu API anahtarı
MULTICA_LLM_BASE_URLboşOpenAI uyumlu uç nokta
MULTICA_LLM_DEFAULT_MODELgpt-5.6-lunaBir istek model belirtmediğinde kullanılır
MULTICA_LLM_MAX_RETRIES2Çağrı başına yeniden deneme tavanı; 0 yeniden denemeleri devre dışı bırakır, 15 onu N'de sınırlar

MULTICA_LLM_MAX_RETRIES, yeniden deneme ilkesi için tek kaynaktır. Varsayılan olan 2 için ayarsız bırakın, her çağrıda tam olarak bir istek göndermek için 0 yapın, veya yeniden denemeleri o kadarla sınırlamak için 1–5 ayarlayın. Bu bir kota değil, bir tavandır: yalnızca yeniden denenebilir başarısızlıklar onu tüketir, bir başarı veya çağıranın kendi son tarihi çağrıyı daha erken bitirebilir. Başka herhangi bir değer — negatif, sayısal olmayan veya 5'in üzerinde — sessizce düzeltilmek yerine başlangıcı başarısız kılar. Tavan bir gecikme bütçesidir: geri çekilme 0.5s'de başlar ve 8s tavanına kadar ikiye katlanır, bu yüzden daha büyük bir bütçe çağıranların kendi son tarihlerini aşar ve yeniden denenebilir bir başarısızlığı bir zaman aşımına çevirir. Yeniden denemeler bağlantı hatalarını ve HTTP 408, 409, 429 ve 5xx'i kapsar; diğer tüm 4xx yanıtları olduğu gibi döner. Sunucu, başlangıçta etkin ilkeyi llm retry policy olarak günlükler, satırda hiçbir kimlik bilgisi olmadan.

Bu katmanı iki özellik kullanır ve her biri sohbet içeriğini yapılandırdığınız uç noktaya gönderir:

  • Sohbet otomatik başlıklandırma — yeni bir sohbet oturumunun ilk kullanıcı mesajı, olduğu gibi gönderilir. Ekler asla dahil edilmez.
  • Takip soruları (bir agent yanıtının altındaki öneri düğmeleri) — konuşmanın kuyruğu: en fazla 6 mesaj, yanıtlanan mesaj 3000 karakterle, her eski mesaj 800 karakterle sınırlı.

Hem API anahtarı hem de taban URL boş olduğunda, bu katman devre dışı kalır ve hiçbir üst akış isteği yapmaz — yukarıdaki iki özellik de hiçbir şey göndermez. İlkeniz bu katmanın sohbet içeriğini dağıtımın dışına göndermesine izin vermediğinde desteklenen yapılandırma budur: sohbet oturumları istemcinin ilk mesajdan türettiği başlığı korur, takip sorusu düğmeleri görünmez ve geri kalan her şey etkilenmez.

Bu yalnızca yardım katmanını kapsar. Bir agent'ı çalıştırmak ayrı bir veri yoludur: bir agent bir sohbeti yanıtladığında, daemon'unuz o agent'ın yapay zekâ kodlama aracını aracın kendi kimlik bilgileriyle çalıştırır ve yukarıdaki MULTICA_LLM_* ayarlarını ona iletmez. (Agent'ın ihtiyaç duyduğu çalıştırma kapsamlı Multica bağlantı değişkenleri daemon tarafından ayrıca enjekte edilir.) Yukarıdaki değişkenleri boşaltmak o yolu etkilemez — onu agent'ın runtime yapılandırması üzerinden yönetin.

Daemon yapılandırması

Aşağıdaki değişkenler, agent'larınızı çalıştıran bilgisayarda okunur, API container'ında değil.

DeğişkenVarsayılanAçıklama
MULTICA_SERVER_URLws://localhost:8080/wsMultica API / WebSocket URL'si; http(s) de kabul eder
MULTICA_DAEMON_DEVICE_NAMEhostnameRuntime listesinde gösterilen cihaz adı
MULTICA_AGENT_RUNTIME_NAMELocal AgentRuntime görünen adı
MULTICA_DAEMON_POLL_INTERVAL30sHiçbir uyandırma olayı gelmediğinde çalıştırma sorgulama aralığı
MULTICA_DAEMON_WS_CLAIM_POLL_INTERVAL3mSağlıklı WebSocket üstlenme güvenlik yoklamaları için üst sınır, MULTICA_DAEMON_POLL_INTERVAL'dan bağımsız yapılandırılır; aşağı yönlü jitter normal varsayılanı 2m30s2m45s yapar, eski sunucular ve belirsiz üstlenmeler ise olağan sorgulama aralığını korur
MULTICA_DAEMON_HEARTBEAT_INTERVAL15sKalp atışı aralığı
MULTICA_DAEMON_MAX_CONCURRENT_TASKS20Daemon başına eşzamanlı çalıştırma tavanı
MULTICA_AGENT_TIMEOUT0Çalıştırma başına mutlak zaman sınırı; 0 sınırsız anlamına gelir
MULTICA_AGENT_IDLE_WATCHDOG2hÇıktı ve araç çalıştırması olmadan izin verilen azami sessizlik süresi; 0 izleyiciyi tamamen devre dışı bırakır
MULTICA_AGENT_TOOL_WATCHDOGMULTICA_AGENT_IDLE_WATCHDOG ile aynıTek bir araç çağrısı için azami sessizlik süresi; yalnızca araçlara modelin aldığından daha fazla alan vermek için ayarlayın, 0 bir araç çağrısını asla zorla durdurmaz
MULTICA_OPENCODE_IDLE_WATCHDOG10mOpenCode'a özel sessizlik eşiği
MULTICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUTMULTICA_AGENT_IDLE_WATCHDOG ile aynıCodex anlamsal-sessizlik eşiği. Codex'in kendi zamanlayıcısı bir aracın çalıştığını göremez, bu yüzden ayrı, daha kısa bir tavan tutmak yerine boşta kalma / araç bütçelerinin büyüğünü izler
MULTICA_CODEX_FIRST_TURN_TIMEOUT0Codex'in ilk-tur ilerleme-yok tavanı için açık geçersiz kılma; 0 varsayılanı korur. Etkin ilk-tur bekleme süresi MULTICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUT ve genel yürütme zaman aşımıyla sınırlı kalır — MULTICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUT'u bu değerin kesin olarak üzerine (biraz payla) ayarlayın, aksi hâlde bekleme ona kısaltılır ve model-kataloğu başlangıç yeniden denemesi atlanır. Eşit değerler yeterli değildir: anlamsal zamanlayıcı önce devreye girer, bu yüzden eşit sürelerde bile yeniden deneme kaybedilebilir
MULTICA_CODEX_HANDSHAKE_TIMEOUT30s; thread/start, thread/resume: 60sCodex uygulama-sunucusu başlangıç el sıkışma tavanları. Açık bir değer her iki bütçeyi de global olarak geçersiz kılar
MULTICA_DAEMON_AUTO_UPDATECloud true; kendi sunucunuzda barındırılan falseCLI güncellemelerinin otomatik olarak kontrol edilip uygulanıp uygulanmayacağı
MULTICA_DAEMON_AUTO_UPDATE_INTERVAL6hGüncelleme kontrol aralığı
MULTICA_DAEMON_AUTO_RELOADtrueDiskte dışarıdan değiştirilen bir multica ikili dosyasına (brew upgrade, yeniden indirme, yerel derleme) yeniden başlayıp başlamayacağı; MULTICA_DAEMON_AUTO_UPDATE'den bağımsızdır
MULTICA_WORKSPACES_ROOT~/multica_workspacesÇalıştırma çalışma dizinleri için kök dizin
MULTICA_AGENT_TEMP_BASE/tmp (Linux/macOS)Yalnızca Linux/macOS. Çalıştırma başına özel geçici dizinler için üst dizin; var olan, yazılabilir mutlak bir dizin olmalıdır ve geçersiz bir değer /tmp'e dönmek yerine çalıştırma başlangıcını başarısız kılar. Kısa bir yol seçin — alt araçlar onun altında AF_UNIX soketleri bağlayabilir ve sun_path, Linux'ta 108 bayt, macOS'ta 104 bayt ile sınırlıdır
MULTICA_KEEP_ENV_AFTER_TASKfalseHata ayıklama için çalıştırma dizinlerini koru

Daemon'ın agent çalıştırmalarına enjekte ettiği iç bağlam için bkz. Çalıştırma runtime ortamı.

Her yapay zekâ kodlama aracı, komut yolunu ve varsayılan modeli geçersiz kılmak için MULTICA_<SAĞLAYICI>_PATH ve MULTICA_<SAĞLAYICI>_MODEL'i kabul eder. QwenPaw ve MiniMax Code'un model değişkeni yoktur çünkü Multica onlara asla bir model göndermez; MiniMax Code'un yol değişkeni MULTICA_MCODE_PATH'tir — bkz. Yapay zekâ kodlama araçları karşılaştırması. DeepSeek Harness, MULTICA_DSH_PATH ve MULTICA_DSH_MODEL'i destekler (dsh kataloğundan bir model kimliği, örn. deepseek-official/deepseek-chat). Dim, MULTICA_DIM_PATH ve MULTICA_DIM_MODEL'i destekler (dim kataloğundan bir model kimliği). ZeroClaw, MULTICA_ZEROCLAW_PATH'i destekler ama model değişkeni yoktur; model seçimi agent profiline aittir. MULTICA_<SAĞLAYICI>_ARGS üzerinden makine çapında varsayılan argümanlar şu anda beş araç için desteklenir: Claude Code, Codex, CodeBuddy, Qwen Code ve QwenPaw. Değişkenler MULTICA_CLAUDE_ARGS, MULTICA_CODEX_ARGS, MULTICA_CODEBUDDY_ARGS, MULTICA_QWEN_ARGS ve MULTICA_QWENPAW_ARGS'tır. Örneğin:

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

Öncelik sırası komut satırı bayrağı → ortam değişkeni → ~/.multica/config.json → yerleşik varsayılandır. İzleyici davranışı için bkz. Daemon ve runtime'lar.

Daemon yapılandırmasını kalıcı hale getirme

Yaygın daemon tarafı ayarlar, kabuk ortam değişkenlerine güvenmek yerine ~/.multica/config.json'a da yazılabilir; adlandırılmış profiller kendilerinkini ~/.multica/profiles/<name>/config.json'da tutar:

multica config set poll_interval 10s
multica config show

Desteklenen anahtarlar:

AnahtarVarsayılanAçıklama
server_urlws://localhost:8080/wsMultica API / WebSocket URL'si
app_urlboşTarayıcı girişi için kullanılan web URL'si
workspace_idboşVarsayılan çalışma alanı
device_namehostnameRuntime listesinde gösterilen cihaz adı
runtime_nameLocal AgentRuntime görünen adı
workspaces_rootprofil bilgili, ~ altında bir yolÇalıştırma çalışma dizinleri için kök dizin
max_concurrent_tasks20Eşzamanlı çalıştırma tavanı; 0 veya boş, ayarlanmamış anlamına gelir
poll_interval30sÇalıştırma sorgulama aralığı
ws_claim_poll_interval3mSağlıklı WebSocket üstlenme güvenlik yoklamaları için üst sınır, poll_interval'dan bağımsız; daemon yalnızca aşağı yönlü jitter uygular
heartbeat_interval15sKalp atışı aralığı
agent_timeoutsınırsızÇalıştırma başına mutlak zaman sınırı
codex_semantic_inactivity_timeouttüretilirCodex anlamsal-sessizlik eşiği. Hiçbir şey ayarlanmadığında, boşta kalma ve araç izleyici bütçelerinin büyüğünü alır; 0 olan bir araç bütçesi boşta kalma bütçesine döner ve yalnızca tüm izleyici takımı devre dışı bırakıldığında Codex kendi 10m'ini korur
codex_handshake_timeout30s; thread/start, thread/resume: 60sCodex uygulama-sunucusu başlangıç el sıkışma tavanları. Açık bir değer her iki bütçeyi de global olarak geçersiz kılar
disable_auto_updateortamı izlertrue otomatik güncellemeyi kapatır; false yerel geçersiz kılmayı temizler ve ortam değişkenine veya varsayılana döner
auto_update_check_interval6hGüncelleme kontrol aralığı
disable_auto_reloadortamı izlertrue, daemon'ın diskte değiştirilen bir ikili dosyayı izlemesini durdurur; false yerel geçersiz kılmayı temizler. disable_auto_update'ten ayrı çözümlenir

Birkaç değer kuralı:

  • Süre anahtarları pozitif Go süreleri kabul eder (10s, 2h gibi); 0s ve negatif değerler reddedilir. Tek istisna agent_timeout'tur: 0s geçerlidir ve çalıştırma zaman sınırını açıkça devre dışı bırakır.
  • Boş bir dize geçmek, kalıcı bir değeri temizler ve ortam değişkenine veya yerleşik varsayılana döner, örneğin multica config set poll_interval "".
  • max_concurrent_tasks, negatif olmayan bir tamsayı gerektirir.
  • Göreli workspaces_root değerleri kaydedilirken mutlak yollara dönüştürülür.

Gözlemlenebilirlik ve analitik

DeğişkenVarsayılanAçıklama
ANALYTICS_DISABLEDfalsePostHog raporlamasını kapatmak için true yapın
POSTHOG_API_KEYboşAyarlanmadığında raporlama kapalıdır; kendi PostHog projenizi kullanmak için ayarlayın
POSTHOG_HOSThttps://us.i.posthog.comPostHog host'u
METRICS_ADDRboşPrometheus metrik dinleme adresi; boş, başlatılmadığı anlamına gelir
REALTIME_METRICS_TOKENboş/health/realtime'ı koruyan Bearer token'ı

Sırada