Przegląd
Cortex to lokalny agent AI z prawdziwym wywoływaniem narzędzi. Czyta pliki, wykonuje komendy shell, edytuje kod, odpytuje sieć — na Twoim sprzęcie, z modelami z Twojej Ollamy, bez rachunków za API.
W przeciwieństwie do alternatyw z permisywnymi licencjami, Cortex jest na AGPL-3.0-only. Każdy fork zostaje otwarty; każde wdrożenie SaaS musi udostępnić kod; żadna korporacja nie wchłonie Cortexa do zamkniętego produktu. Twoja inwestycja w projekt — i społeczności — jest chroniona prawnie.
Zobacz w działaniu
Prawdziwa sesja Cortex CLI, od góry do dołu: banner pokazuje
załadowany model i potwierdza, że Policy Engine (12 narzędzi),
Recovery Engine i Context Compactor są aktywne. Następnie
/model gemma4:26b zmienia model w trakcie sesji na
większy. /model (bez argumentu) listuje wszystkie
dostępne modele na hoście. /think włącza tryb
rozumowania. Użytkownik pyta "wyjaśnij SSH" po polsku — a
model odpowiada po polsku, z nagłówkami markdown i pogrubieniem
zachowanym w terminalu.
gemma4:26b. Pokazana lokalizacja polska — prompt,
odpowiedź i komunikaty UI są po polsku; angielska to ustawienie
domyślne.
Możliwości
- 10 wbudowanych narzędzi — bash, read / write / edit plików, grep, glob, list_dir, plus opcjonalna integracja z Consciousness Server dla wspólnych notatek, zadań i semantic search.
- Policy Engine — reguły deny / ask / allow oparte o regex, stosowane do każdego wywołania narzędzia. Odmawia niebezpiecznych komend niezależnie od tego, kto je zlecił: człowiek, halucynacja modelu czy prompt injection.
- Recovery Engine — automatyczne ponowienia po tymczasowych błędach, opcjonalny fallback do hostowanego API LLM, gdy lokalny model nie radzi sobie z konkretnym zadaniem.
- Kompresja kontekstu — automatyczne sumaryzowanie starszych wiadomości, gdy kontekst się zapełnia. Długie sesje zachowują spójność bez eksplozji kosztu tokenów.
- Trzy tryby działania — interaktywny CLI, UI w przeglądarce ze streamingiem WebSocket, oraz autonomiczny worker pobierający zadania z task servera w tle.
- Zmiana modelu w trakcie sesji — wpisz
/model gemma4:26bi kontynuuj tę samą rozmowę z innym modelem. Pełna historia w sekcji niżej. - System pluginów — wrzuć plik Python do katalogu
plugins/zPLUGIN_TOOLSiexecute_tool(); aktywuj przez--mode NAME. Bez rejestru, bez kroku instalacji. - Niezmienniki bezpieczeństwa wymuszane na CI — walker AST plus runtime sentinel check. Wyłączenie testów niezmienników unieważnia gwarancje bezpieczeństwa licencji komercyjnej.
Wiele modeli — trzy warstwy
Cortex jest jednym z niewielu samodzielnie hostowanych agentów zaprojektowanych z założenia, że pojedynczy LLM rzadko wystarczy. Różne zadania pasują do różnych modeli; różne maszyny mają różną pojemność; czasem lokalny model potrzebuje pomocy. Wsparcie dla wielu modeli rozciąga się na trzy warstwy, każdą używalną niezależnie.
1. Zmiana modelu w trakcie sesji
W ramach jednej rozmowy wpisz /model aby zobaczyć co
jest dostępne, potem /model NAZWA aby przełączyć.
Konwersacja kontynuuje z nowym modelem od następnej tury. Krótki,
szybki model do eksploracji; duży model do trudnej części —
ten sam kontekst, bez restartu.
> /model
Aktualny: gemma4:e4b
Dostępne: gemma4:e4b, gemma4:26b, qwen3:14b, mistral-small:24b
> /model gemma4:26b
Przełączono na gemma4:26b. Konwersacja kontynuuje.
> A teraz refaktoryzuj moduł auth tym większym modelem. 2. Recovery fallback do hostowanego LLM
Ustaw ANTHROPIC_API_KEY w .env i Recovery
Engine staje się siatką bezpieczeństwa. Gdy lokalny model zawodzi
(zniekształcone wywołanie narzędzia, ucięta odpowiedź, zatrzymana
generacja), Cortex próbuje ponownie lokalnie; jeśli ponowienia się
wyczerpią, może opcjonalnie skierować ten sam prompt do
hostowanego API jako fallback. Dwie warstwy w jednym agencie:
najpierw lokalnie, w chmurę tylko gdy lokalnie nie wyszło.
Fallback jest opt-in. Bez ustawionego klucza API Cortex pozostaje w pełni lokalny i raportuje błąd — żadnego cichego przecieku Twoich promptów do chmury.
3. Orkiestracja floty przez Consciousness Server
Najmocniejszy wzorzec: uruchom kilka instancji Cortex na różnych
maszynach, każda z modelem dopasowanym do swojego sprzętu, wszystkie
dzielące stan przez Consciousness Server. Tryb workera
(./run.sh worker) odpytuje CS o zadania; ten Cortex,
który podejmie zadanie, używa swojego lokalnego modelu. Efektywnie
dostajesz heterogeniczną flotę agentów:
- Stacja robocza z GPU obsługująca Cortex z
gemma4:26bbierze ciężkie wnioskowanie, code review, analizę dokumentów. - Host CPU-only obsługujący Cortex z
gemma4:e4brobi szybką klasyfikację, sumaryzowanie, drobne narzędzia. - Raspberry Pi albo niski węzeł z
gemma4:e4bbierze zadania o najniższym priorytecie w tle. - Laptop z Claude Code lub Cortex CLI orkiestruje, przydzielając zadania węzłowi z wolną mocą.
Każdy węzeł używa innego modelu; wszystkie widzą tę samą wspólną
pamięć w CS; kanał czatu pozwala agentom się koordynować
(@gpu-worker przeanalizuj to ponownie większym modelem).
To jest produkcyjny setup, który autor uruchamia od połowy 2025
— weryfikowalny przez rejestr machines-server.
Roadmap — automatyczna orkiestracja modeli
Dziś routing jest jawny (model wybierasz przez /model
albo przez to, który worker podejmie zadanie). Planowane na v1.2:
automatyczna orkiestracja w jednym procesie, gdzie Cortex sam
decyduje, który model wywołać per krok — mały szybki do parsowania,
większy do wnioskowania, specjalistyczny do generacji kodu. Nie
dostarczane dziś; flagowane uczciwie.
Instalacja
# 1. Zainstaluj Ollamę
curl -fsSL https://ollama.com/install.sh | sh
# 2. Pobierz model wspierający tool-calling
ollama pull gemma4:e4b # 3 GB, szybki na CPU
# albo
ollama pull gemma4:26b # 17 GB, wymaga GPU
# 3. Uruchom Cortex
git clone https://github.com/build-on-ai/cortex.git
cd cortex
./run.sh agent # interaktywny CLI
./run.sh web # browser UI pod http://localhost:8080
./run.sh worker # autonomiczny worker zadań run.sh przy pierwszym uruchomieniu tworzy automatycznie
Python venv i instaluje zależności. Zero zanieczyszczania
globalnego Pythona. Działa na Linuksie i macOS; Windows przez WSL.
Tryby
| Tryb | Komenda | Opis |
|---|---|---|
| CLI | ./run.sh agent | Interaktywny czat w terminalu z wywoływaniem narzędzi |
| Web | ./run.sh web | Interfejs przeglądarkowy ze streamingiem WebSocket pod http://localhost:8080 |
| Worker | ./run.sh worker | Pollu Consciousness Server, wykonuje zadania, raportuje wyniki |
| One-shot | ./run.sh worker --once | Wykonuje jedno oczekujące zadanie i kończy |
| Plugin | ./run.sh agent --mode NAME | Aktywuje wybrany plugin po nazwie |
./run.sh web) — ten sam agent, to samo
wywoływanie narzędzi, ten sam Policy Engine, renderowane w
przeglądarce. Chain-of-thought widoczny, gdy think
jest włączony; wywołania narzędzi pokazują się jako rozwijalne
bloki pod odpowiedzią.
Przetestowane modele
Każdy model Ollamy z obsługą tool-calling działa. Lista poniżej to to, co zweryfikowaliśmy w sensie "działa rozsądnie z infrastrukturą tool-calling Cortex" — nie wielomiesięczny benchmark. Czasy CPU/GPU to przybliżona orientacja, nie obietnica.
| Model | Rozmiar | CPU | GPU | Uwagi |
|---|---|---|---|---|
gemma4:e4b | 3 GB | ~16s/turę | ~3s/turę | Szybki na CPU, dobra baza |
gemma4:26b | 17 GB | wolno | ~20s/turę | Wnioskowanie produkcyjnej jakości, wymaga GPU |
gemma4:31b | 20 GB | bardzo wolno | ~25s/turę | Maksymalna głębokość wnioskowania na pojedynczym GPU |
qwen3:8b / 14b / 30b | 4–17 GB | różnie | szybko | Mocne tool-calling, wielojęzyczne |
mistral-nemo:12b / mistral-small:24b | 6–13 GB | — | szybko | Solidny generalista, dobra obsługa kontekstu |
Bielik / PLLuM | różnie | różnie | różnie | Polskie modele językowe, przetestowane integracje |
WhiteRabbitNeo v1.5a | 3 GB | — | szybko | Uncensored model — sprawdza się z tool callingiem do badań security |
Policy Engine
/policy z prawdziwej sesji Cortex — 12
zarejestrowanych narzędzi z licznikami deny / ask / allow per
narzędzie. Dwa ostatnie wpisy (kali,
ask_cyberpedia) pochodzą z customowego pluginu
security załadowanego przy starcie; reszta to standardowe narzędzia.
Każde wywołanie narzędzia przechodzi przez Policy Engine przed wykonaniem. Trzy klasy reguł:
- DENY (cicho odrzucone) — destrukcyjne komendy
jak
rm -rf /,mkfs,dd, fork bombs,curl | bash,shutdown. - ASK (wymaga potwierdzenia) — uprzywilejowane
komendy jak
sudo, instalacje pakietów (apt,pip,npm), force-pushe, kill procesów. - ALLOW (działa natychmiast) — komendy
tylko-do-odczytu i inspekcyjne jak
ls,cat,grep,git status,ps.
Reguły customowe trafiają do policy.json w roocie projektu:
# policy.json — przykład custom rule
{
"deny": ["rm -rf /", "mkfs", "dd if=", "shutdown"],
"ask": ["sudo", "apt install", "pip install", "git push --force"],
"allow": ["ls", "cat", "grep", "git status"]
} Dlaczego to ważne: Policy Engine to także nasza strukturalna obrona przeciwko prompt injection. Skompromitowany prompt może poprosić model o usunięcie plików, ale policy odmawia niezależnie od tego, kto lub co o to poprosił. Pełen model zagrożeń na stronie profil bezpieczeństwa.
Pluginy
Wrzuć plik Python do katalogu plugins/ z trzema
wpisami — PLUGIN_NAME, PLUGIN_TOOLS
(definicje narzędzi w formacie Ollamy) i execute_tool(name,
args). Aktywuj przez ./run.sh agent --mode NAZWA.
Bez rejestru paczek, bez komendy install, bez semantycznego
wersjonowania API pluginów. Pliki w katalogu; Cortex znajduje je
przy starcie. Dziś pluginy są trusted-by-design (Cortex dokumentuje
to uczciwie w SECURITY.md); v1.2 przynosi prawdziwą
izolację przez PEP 684 subinterpreters i otwiera drogę do
publicznego marketplace pluginów społeczności.
Profil bezpieczeństwa
Cortex to lokalny, jednoużytkownikowy agent AI. Ufa operatorowi
maszyny, lokalnej instancji Ollamy i każdemu pluginowi, który
ładujesz. Dostęp do filesystemu i shella jest celowo bez
sandboxa — myśl bash, nie przeglądarka.
Przed wdrożeniem poza pojedynczą stacją roboczą (host współdzielony,
sieć narażona, niesprawdzone pluginy) przeczytaj SECURITY.md w repo.
Dokumentuje model zagrożeń, decyzje projektowe wyglądające na luki,
ale nimi niebędące, i jak zgłosić realne problemy.
- 18 rund audytu bezpieczeństwa w developmencie.
- 57 zielonych testów integracyjnych, w tym testy niezmienników security.
- Strukturalne niezmienniki wymuszane na CI — walker AST waliduje gwarancje bezpieczeństwa przy każdym commicie; nieprzechodzący run blokuje release.
- Auto-zbierana powierzchnia wyjątków — każdy escape hatch
invariant: allow-...trafia doUNSAFE.mddo review.