feat: add startup launch support (#1421)

Add launch-at-startup support across the Electron desktop app and the web CLI.

Electron now supports macOS launch-at-login through the native login item API. Login launches start OpenChamber in the background without opening a window, while Dock activation, deep links, and second-instance launches still open or focus the normal app window. The desktop Settings UI now exposes a localized launch-at-login toggle in Desktop Network Access.

The web CLI now includes `openchamber startup status|enable|disable`, backed by native user services:
- macOS: launchd LaunchAgent
- Linux: systemd --user service
- Windows: Task Scheduler

Startup services run `openchamber serve --foreground` so the OS service manager owns process lifetime and restarts. Foreground service updates now defer restarts to the service manager instead of spawning duplicate CLI restarts.

Startup services snapshot useful environment variables by default so provider tokens, PATH, SSH agent settings, and OpenCode configuration survive login/reboot starts. The snapshot avoids shell/session-only state, uses systemd-compatible env quoting on Linux, and avoids unused env artifacts on macOS.

Also adds localized docs for startup services and environment variables.
This commit is contained in:
Bohdan Triapitsyn
2026-05-26 01:36:11 +03:00
committed by GitHub
parent e97bf0d9dc
commit 2014303bc0
30 changed files with 1854 additions and 30 deletions
@@ -0,0 +1,134 @@
---
title: Zmienne środowiskowe
description: Skonfiguruj integrację OpenChamber i OpenCode za pomocą zmiennych środowiskowych.
---
# Zmienne środowiskowe
OpenChamber odczytuje te zmienne przy starcie. Dla usług startowych `openchamber startup enable` domyślnie zapisuje snapshot bieżącego środowiska, więc uruchom tę komendę ponownie po zmianie zmiennych, których ma używać usługa.
## Serwer OpenChamber
### `OPENCHAMBER_HOST`
Adres, na którym nasłuchuje serwer web OpenChamber. Użyj `0.0.0.0`, aby pozwolić na dostęp z innych maszyn.
### `OPENCHAMBER_UI_PASSWORD`
Hasło do interfejsu w przeglądarce. Ustaw je przy dostępie spoza localhost, tunelach albo reverse proxy.
### `OPENCHAMBER_DATA_DIR`
Nadpisuje katalog danych OpenChamber. Domyślnie jest to `~/.config/openchamber`.
### `OPENCHAMBER_COMPRESS_API`
Steruje kompresją odpowiedzi API. `true` albo `1` ją włącza, `false` albo `0` wyłącza.
### `OPENCHAMBER_SKIP_API_COMPRESSION`
Wyłącza kompresję odpowiedzi API, gdy ma wartość `true` albo `1`. Ma pierwszeństwo przed `OPENCHAMBER_COMPRESS_API`.
### `OPENCHAMBER_VERBOSE_REQUEST_LOGS`
Włącza szczegółowe HTTP request logs, gdy ma wartość `true` albo `1`.
### `OPENCHAMBER_UPDATE_API_URL`
Nadpisuje endpoint sprawdzania aktualizacji. Większość użytkowników nie powinna tego ustawiać.
### `OPENCHAMBER_PACKAGE_MANAGER`
Wymusza package manager używany do aktualizacji, gdy automatyczne wykrywanie się pomyli.
## Serwer OpenCode
### `OPENCODE_HOST`
Łączy OpenChamber z istniejącym OpenCode server. Wartość musi być origin `http` albo `https` z jawnym portem i bez path, query ani hash. `OPENCODE_HOST` ma pierwszeństwo przed `OPENCODE_PORT`.
### `OPENCODE_PORT`
Ustawia port OpenCode server. Dla managed OpenCode prosi o ten port; z `OPENCODE_SKIP_START=true` łączy się z zewnętrznym serwerem na tym porcie.
### `OPENCODE_SKIP_START`
Gdy ma wartość `true`, blokuje uruchamianie własnego OpenCode server przez OpenChamber.
### `OPENCHAMBER_OPENCODE_HOSTNAME`
Hostname dla OpenCode server zarządzanego przez OpenChamber. Domyślnie `127.0.0.1`.
### `OPENCODE_BINARY`
Ścieżka do executable `opencode`, którego ma używać OpenChamber.
### `OPENCODE_CONFIG`
Ścieżka do konkretnego pliku config OpenCode.
### `OPENCODE_CONFIG_DIR`
Ścieżka do katalogu config OpenCode dla agents, skills, snippets i config discovery.
### `OPENCODE_DATA_DIR`
Własny katalog danych dla managed OpenCode server.
### `OPENCODE_WSL_DISTRO`
Wybiera WSL distro używane do integracji OpenCode w Windows.
### `OPENCHAMBER_OPENCODE_WSL_DISTRO`
Alias specyficzny dla OpenChamber do wyboru WSL distro. `OPENCODE_WSL_DISTRO` ma pierwszeństwo, gdy ustawione są obie zmienne.
### `OPENCODE_JWT_SECRET`
Secret używany do podpisywania UI auth tokens. Dla trwałych usług użyj długiej losowej wartości.
## Terminal i Git
### `OPENCHAMBER_TERMINAL_SHELL`
Shell executable używany przez terminal sessions w OpenChamber.
### `OPENCHAMBER_GIT_BINARY`
Git executable używany przez funkcje Git w OpenChamber.
### `GIT_BINARY`
Alternatywny override dla Git executable. Dla konfiguracji specyficznej dla OpenChamber preferuj `OPENCHAMBER_GIT_BINARY`.
### `OPENCHAMBER_GIT_READ_CACHE_TTL_MS`
TTL w milisekundach dla cached Git-backed file reads. Ustaw `0`, aby wyłączyć cache podczas debugowania.
## Głos i tunele
### `OPENAI_API_KEY`
API key używany przez funkcje głosowe OpenChamber, które wywołują OpenAI-compatible services.
### `OPENCHAMBER_ALLOW_REMOTE_OPENAI_COMPAT_URLS`
Pozwala na zdalne OpenAI-compatible base URLs dla funkcji głosowych, gdy ma wartość `true` albo `1`.
### `NGROK_AUTHTOKEN`
ngrok auth token używany przez tunnel commands OpenChamber. Możesz też skonfigurować go przez `ngrok config add-authtoken <token>`.
## Runtime helpers
### `BUN_BINARY`
Bun executable, którego OpenChamber ma używać do uruchamiania daemon processes.
### `BUN_INSTALL`
Katalog główny instalacji Bun. OpenChamber używa go, aby znaleźć `bin/bun` dla daemon startup i aktualizacji.
### `VITE_OPENCODE_URL`
Build-time API base URL dla Vite-built web app. Przy normalnym użyciu CLI lub desktop większość użytkowników nie powinna tego ustawiać.