# Praca na wielu projektach

Speedwave prowadzi kilka projektów obok siebie i niejeden z nich może działać jednocześnie. Każdy projekt to osobny świat: własna sieć kontenerów, własny katalog tokenów i własny katalog domowy Claude. Zajrzyj do sekcji [projekty i sesje](/pl/docs/understand/projects-and-sessions/), żeby poznać, czym jest projekt i jak go zarejestrować.

## Co nigdy nie przekracza granicy projektu

Worker jednego projektu nie sięgnie do sieci ani danych uwierzytelniających innego. Każdy projekt otrzymuje domyślnie własną sieć o nazwie `speedwave_<project>_network`, a kontenery pracujące w sieci jednego projektu nie porozumieją się z kontenerami z sieci innego. Dane uwierzytelniające usług leżą w osobnym katalogu tokenów dla każdego projektu, `~/.speedwave/tokens/<project>/<service>/`, a worker montuje tam wyłącznie podkatalog swojej własnej usługi. Każdy projekt ma też własny katalog domowy Claude, więc zalogowanie do Claude w jednym projekcie nie zaloguje cię automatycznie w drugim. Pełny opis tych granic znajdziesz w części o [izolacji](/pl/docs/security/isolation/).

## Co jest współdzielone

Na każdą instancję Speedwave przypada jedna maszyna wirtualna, którą dzielą między siebie wszystkie projekty: Lima na macOS, WSL2 na Windows. Wszystkie twoje projekty działają wewnątrz tej maszyny, choć na poziomie sieci i katalogu tokenów pozostają od siebie odseparowane. Osobna instancja z własną maszyną wirtualną powstaje tylko wtedy, gdy wskażesz `SPEEDWAVE_DATA_DIR` w inne miejsce.

## Operacje na tym samym projekcie się nie nakładają

Speedwave wykonuje po kolei operacje, które zmieniają kontenery projektu, czyli uruchomienie, aktualizację i ponowne utworzenie, dzięki czemu dwie z nich na *tym samym* projekcie nigdy się nie przeplotą, niezależnie od tego, czy to akcja z Desktop, czy uruchomienie `speedwave update` z CLI. Blokada obowiązuje osobno dla każdego projektu, więc aktualizacja jednego nigdy nie wstrzyma startu kontenerów drugiego, a odczyt listy kontenerów czy logów pozostaje responsywny nawet w trakcie aktualizacji.

## Przełączanie aktywnego projektu

W aplikacji Desktop to przełącznik projektów decyduje, który projekt jest aktywny. Przełączenie zapisuje nowy aktywny projekt w twojej konfiguracji, uruchamia kontenery projektu docelowego i dopiero potem, w tle, zatrzymuje kontenery poprzedniego. Naraz odbywa się tylko jedno przełączenie.

Przełączenie działa jak transakcja: powodzenie zgłaszane jest dopiero wtedy, gdy projekt docelowy w pełni wstanie, i dopiero wtedy poprzedni projekt trafia do wątku w tle, który go zatrzymuje. Jeśli projekt docelowy nie wstanie poprawnie, Speedwave zatrzymuje tylko to, co zdążyło się w nim częściowo uruchomić, a poprzedni projekt zostawia nietknięty, więc nieudane przełączenie nigdy nie pozbawia cię działającego projektu. Ponieważ zatrzymanie poprzedniego projektu następuje już po udanym przełączeniu, Speedwave najpierw zapisuje je na dysku jako oczekujące zatrzymanie. Gdyby aplikacja została zamknięta, zanim to zatrzymanie dobiegnie końca, kolejne uruchomienie odczyta ten zapis i dokończy zatrzymywanie pozostałego projektu.

Z poziomu CLI katalog roboczy nie decyduje o wyborze projektu. Samo `speedwave` sięga po aktywny projekt z twojej konfiguracji. Żeby z dowolnego katalogu wskazać konkretny projekt, dodaj `--project <name>`; działa to dla poleceń `speedwave`, `login`, `logout` i `update`.