Ścieżki tokenów i danych uwierzytelniających
Wszystkie dane uwierzytelniające, które przechowuje Speedwave, trafiają do jednego katalogu danych, domyślnie ~/.speedwave/. Ustaw zmienną środowiskową SPEEDWAVE_DATA_DIR, żeby przenieść go gdzie indziej: wszystkie ścieżki poniżej rozwiną się wtedy w wybranej przez ciebie lokalizacji. Speedwave odczytuje tę zmienną raz na proces, więc jej zmiana wymaga restartu. Pełną listę zmiennych, które Speedwave odczytuje przy starcie, znajdziesz w zmiennych środowiskowych, a zasady bezpieczeństwa, dzięki którym jedna usługa nie odczyta plików innej, opisuje strona o obsłudze danych uwierzytelniających.
Struktura katalogów
Dział zatytułowany „Struktura katalogów”Folder~/.speedwave/
Foldertokens/
Folder<project> /
Folder<service> / dane uwierzytelniające workera dla danej usługi
- … pliki uwierzytelniające
Folderllm/
- <provider_id> _api_key klucz API dostawcy LLM
Folderclaude-home/
Folder<project> /
Folder.claude/
- .credentials.json OAuth Anthropic (zarządzane przez Claude Code)
Folderoauth/
Folder<project> /
- <service> .json tokeny odświeżające OAuth wtyczki (poza punktem montowania)
Folderplugin-state/
Folder<slug> /
- bridge-token zapisany token mostka do hosta
Folderide-bridge/
- <port> .lock token UUID IDE Bridge
<project> to przestrzeń nazw przypisana danemu projektowi. <service> to identyfikator usługi MCP: albo wbudowanego workera, albo wtyczki. <provider_id> to identyfikator dostawcy LLM z claude.llm. <slug> to identyfikator wtyczki, a <port> to port IDE Bridge.
Ścieżki w skrócie
Dział zatytułowany „Ścieżki w skrócie”| Ścieżka | Zawiera | Punkt montowania | Tryb |
|---|---|---|---|
tokens/<project>/<service>/<file> | Dane uwierzytelniające jednej usługi MCP | Tylko worker tej usługi, pod /tokens (tylko do odczytu) | plik 0o600, katalog 0o700 |
tokens/<project>/llm/<provider_id>_api_key | Klucz API jednego dostawcy LLM | Tylko kontener proxy, pod /tokens (tylko do odczytu), jako zmienna środowiskowa SPW_KEY_<PROVIDER_ID> | plik 0o600, katalog 0o700 |
claude-home/<project>/.claude/.credentials.json | Dane uwierzytelniające OAuth Anthropic | ${CLAUDE_HOME} pod /home/speedwave (odczyt i zapis) | zarządzane przez Claude Code |
oauth/<project>/<service>.json | Tokeny odświeżające OAuth wtyczki i sekrety klienta | Bez punktu montowania; odczytuje je worker oauth po stronie hosta | plik 0o600, katalog 0o700 |
plugin-state/<slug>/bridge-token | Zapisany token uwierzytelniający mostka do hosta | Bez punktu montowania | plik 0o600, gdy istnieje |
ide-bridge/<port>.lock | Token uwierzytelniający UUID v4 dla IDE Bridge | /home/speedwave/.claude/ide/ (tylko do odczytu) | plik 0o600, katalog 0o700 |
Tokeny workerów dla poszczególnych usług
Dział zatytułowany „Tokeny workerów dla poszczególnych usług”Każda usługa MCP, która przechowuje dane uwierzytelniające, dostaje własny katalog, tokens/<project>/<service>/, z plikami zadeklarowanymi przez tę usługę. Speedwave zakłada go tylko dla usług, których lista plików uwierzytelniających nie jest pusta. Ten jeden katalog jest montowany tylko do odczytu w odpowiadającym mu workerze, pod /tokens, a reguła SecurityCheck o nazwie PLUGIN_TOKEN_PATH_MISMATCH sprawdza jeszcze przed startem kontenera, czy zamontowana ścieżka faktycznie odpowiada tokens/<project>/<service>/. Dzięki temu przejęty worker ujawnia wyłącznie dane uwierzytelniające własnej usługi.
Klucze dostawców LLM
Dział zatytułowany „Klucze dostawców LLM”Klucz dostawcy LLM skonfigurowany w claude.llm ląduje w tokens/<project>/llm/<provider_id>_api_key, gdzie nazwa pliku to identyfikator dostawcy z dopiskiem _api_key. Katalog llm montuje się tylko do odczytu wyłącznie w kontenerze proxy, a każdy klucz trafia tam jako zmienna środowiskowa o nazwie SPW_KEY_<PROVIDER_ID>, czyli identyfikator dostawcy zapisany wielkimi literami, z myślnikami zamienionymi na podkreślenia:
openrouter -> SPW_KEY_OPENROUTERmy-anthropic -> SPW_KEY_MY_ANTHROPIC
tokens/proj/llm/openrouter_api_keyDane uwierzytelniające OAuth Anthropic
Dział zatytułowany „Dane uwierzytelniające OAuth Anthropic”Dane uwierzytelniające OAuth Anthropic znajdują się pod claude-home/<project>/.claude/.credentials.json, gdzie zapisuje je i odświeża Claude Code, wewnątrz montowania typu bind ${CLAUDE_HOME} pod /home/speedwave. Rola Speedwave sprowadza się tu do wskazania tego pliku dla montowania w compose oraz wyczyszczenia go po speedwave logout.
Tokeny odświeżające OAuth wtyczek
Dział zatytułowany „Tokeny odświeżające OAuth wtyczek”Tokeny odświeżające OAuth wtyczek oraz sekrety klienta nigdy nie trafiają pod tokens/. Zamiast tego lądują poza punktem montowania, w oauth/<project>/<service>.json, dzięki czemu wszystko pod tokens/ pozostaje tylko do odczytu, gdziekolwiek jest zamontowane. Nazwą pliku jest identyfikator usługi, więc wbudowana usługa OAuth, na przykład sharepoint, zapisuje plik sharepoint.json.
Stan wtyczki i token mostka
Dział zatytułowany „Stan wtyczki i token mostka”Zmienny stan poszczególnych wtyczek znajduje się pod plugin-state/<slug>/, w oderwaniu od podpisanych plików samej wtyczki. Przykładem jest zapisany token uwierzytelniający mostka do hosta, plugin-state/<slug>/bridge-token. Mostek hosta w Desktop zapisuje go z uprawnieniami 0o600 i tylko wtedy, gdy manifest wtyczki włącza opcję persistent_token.
Plik blokady IDE Bridge
Dział zatytułowany „Plik blokady IDE Bridge”Plik blokady IDE Bridge, ide-bridge/<port>.lock, zawiera token uwierzytelniający UUID v4, który Desktop generuje od nowa przy każdym starcie i nigdy nie zachowuje między restartami. Zapisuje się go z uprawnieniami 0o600 wewnątrz katalogu nadrzędnego 0o700 i montuje do kontenera tylko do odczytu, pod /home/speedwave/.claude/ide/.
Uprawnienia plików
Dział zatytułowany „Uprawnienia plików”Speedwave ustawia każdy plik uwierzytelniający na tryb 0o600, a jego katalog nadrzędny na 0o700, których właścicielem jest twoje konto użytkownika. W Windows odpowiednikiem jest DACL z jednym wpisem pełnej kontroli dla twojego konta, nadawana w chwili tworzenia pliku lub katalogu.
W systemach uniksowych Speedwave dodatkowo sprawdza te uprawnienia przy starcie i sam poprawia błędne bity; nie naprawi jednak niezgodnego właściciela, bo to wymaga uprawnień roota. Windows nie ma odpowiednika takiego sprawdzenia przy starcie: DACL nadaje się raz, w chwili tworzenia, i nigdy później nie jest ona ponownie weryfikowana ani naprawiana.