Przejdź do głównej zawartości

Praca z wieloma projektami

Speedwave umożliwia równoległą obsługę wielu przestrzeni roboczych na jednej maszynie. Każdy zarejestrowany projekt działa w odrębnym środowisku kontenerowym przy zachowaniu pełnej separacji sieci, poświadczeń i stanów sesji. Szczegóły rejestracji projektów opisano w rozdziale Projekty i sesje.

Pomiędzy poszczególnymi obszarami roboczymi obowiązują ścisłe reguły separacji zasobów:

  • Izolacja sieciowa kontenerów: Każdy projekt działa w odrębnej sieci typu bridge (speedwave_<project>_network), co uniemożliwia bezpośrednią komunikację kontenerów różnych projektów.
  • Osobne katalogi poświadczeń: Tokeny usług znajdują się w osobnych katalogach dla każdego projektu (~/.speedwave/tokens/<project>/<service>/), a poszczególne workery montują wyłącznie swoje pliki w trybie tylko do odczytu.
  • Niezależne stany sesji: Konfiguracja i historia sesji Claude Code są zapisywane w odrębnym folderze <data_dir>/claude-home/<project>/, dzięki czemu stan uwierzytelnienia nie jest współdzielony pomiędzy projektami.

Pełny opis architektury bezpieczeństwa znajdziesz w rozdziale Model izolacji.

Wszystkie projekty w ramach danej instancji Speedwave działają wewnątrz wspólnej maszyny wirtualnej Linuksa (Lima na macOS, WSL2 na Windows). Izolacja logiczna jest realizowana na poziomie przestrzeni nazw sieci (network namespaces) oraz uprawnień systemu plików. Całkowicie niezależną instancję z nową maszyną wirtualną można skonfigurować za pomocą zmiennej środowiskowej SPEEDWAVE_DATA_DIR.

Operacje modyfikujące stan kontenerów (uruchamianie, aktualizacja lub przebudowa) są kolejkowane na poziomie danego projektu. Dzięki temu aktualizacja jednego projektu nie blokuje uruchamiania czy obsługi zapytań w innym projekcie, a odczyt statusu i logów pozostaje w pełni responsywny.

W aplikacji Desktop przełącznik projektów w nagłówku odpowiada za wybór aktywnego obszaru roboczego:

  1. Aplikacja uruchamia i weryfikuje kontenery docelowego projektu.
  2. Po pomyślnym uruchomieniu nowego środowiska klucz aktywnego projektu zostaje zaktualizowany w pliku config.json.
  3. Poprzednie środowisko kontenerowe jest bezpiecznie wyłączane w procesie działającym w tle.

Przełączanie działa w sposób transakcyjny: w przypadku niepowodzenia startu docelowego projektu Speedwave wyłącza jedynie częściowo uruchomione kontenery, pozostawiając poprzedni projekt w stanie nienaruszonym. Zdarzenia zamykania w tle są rejestrowane na dysku, co pozwala na dokończenie procedury przy kolejnym uruchomieniu aplikacji w razie jej niespodziewanego zamknięcia.

W wierszu poleceń CLI domyślnie wybierany jest aktywny projekt z konfiguracji. Aby wykonać operację na wybranym projekcie, wystarczy przekazać parametr --project <nazwa> do poleceń speedwave, login, logout lub update.