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ć.
@@ -44,6 +44,33 @@ openchamber stop
Samo `openchamber` uruchamia serwer w tle. Dodaj `--foreground`, aby pozostał dołączony do Twojego terminala.
## Uruchamianie OpenChamber po zalogowaniu
Użyj `startup enable`, aby zainstalować natywną usługę użytkownika. OpenChamber używa `launchd` na macOS, `systemd --user` na Linuksie i Harmonogramu zadań w Windows.
```bash
openchamber startup enable
openchamber startup status
openchamber startup disable
```
Aby zabezpieczyć UI, ustaw hasło podczas włączania usługi:
```bash
OPENCHAMBER_UI_PASSWORD='secret' openchamber startup enable
```
`startup enable` zapisuje migawkę bieżącego środowiska w usłudze, aby uruchomienie było bliższe ręcznemu startowi `openchamber` z tej samej powłoki. Zachowuje to tokeny dostawców, `PATH`, ustawienia agenta SSH i inne zmienne CLI auth/config. Użyj `--no-env-snapshot`, jeśli chcesz minimalne środowisko usługi.
Tunelami dla tej działającej usługi możesz zarządzać niezależnie:
```bash
openchamber tunnel start --port 3000
openchamber tunnel stop --port 3000
```
Zatrzymanie tunelu nie restartuje usługi ani aplikacji.
## „OpenCode uruchamia się ponownie”
Gdy serwer startuje lub uruchamia się ponownie, OpenChamber pokazuje stan „OpenCode uruchamia się ponownie” i wstrzymuje żądania, aż będzie gotowy. To normalne tuż po uruchomieniu lub restarcie. Jeśli ten stan nigdy nie znika, zobacz [Połączenie z OpenCode](/pl/troubleshooting/opencode-connection/).