Przejdź do treści

Inwentarz komponentów

Z czego składa się wdrożenie AgenticOS: części pisane w tym projekcie, zewnętrzne pakiety, od których zależą, obrazy, w których działają, zasoby, które dostarczają, oraz modele i usługi podłączane przez operatora później. To czytelna połowa SBOM-u wydania i odpowiedź na pytanie „co jest w środku”, gdy pada ono podczas przeglądu bezpieczeństwa, a nie w systemie budowania.

Co ta strona obejmuje i gdzie się kończy

Wszystko do sekcji Dostarczane zasoby włącznie jest dostarczane przez ten projekt i wyliczone dokładnie — z plików lock i z Dockerfile'i. Wszystko po niej — modele, providerzy, serwery MCP, bazy danych, na które wskazuje wdrożenie — jest wybierane per wdrożenie, nie jest tu dostarczane i może zostać wypisane wyłącznie przez to wdrożenie, które je wybrało. Ostatnia sekcja mówi, jak spisać tę drugą połowę; ta strona nie zrobi tego za Ciebie.

Inwentarz odczytywalny maszynowo jest dołączany do każdego wydania jako sześć dokumenty CycloneDX — po jednym na obraz na architekturę, bo opublikowany tag jest listą manifestów, a oba warianty nie zawierają tych samych pakietów. Dowody licencyjne dla każdego komponentu znajdziesz w THIRD_PARTY_NOTICES.md, a przegląd tego, do czego te licencje zobowiązują — w Licencjach i notach o oprogramowaniu firm trzecich.

Wydanie, które opisuje ten inwentarz

Inwentarz bez numeru wersji nie opisuje niczego. Każde wydanie ma własny: dokumenty SBOM na wydaniu GitHub dla tagu vX.Y.Z, wygenerowane z obrazów opublikowanych pod tym tagiem, oraz tę stronę w postaci, w jakiej była w drzewie tego tagu. Wdrożenie czytające inwentarz dla wersji, którą uruchamia, powinno czytać oba z tego samego tagu, a nie z main.

Artefakt Gdzie jest Co nazywa jego wersję
sbom-api-amd64.cdx.json, sbom-api-arm64.cdx.json zasoby wydania GitHub tag v*, do którego są dołączone
sbom-frontend-amd64.cdx.json, sbom-frontend-arm64.cdx.json tam samo tak samo
sbom-browser-amd64.cdx.json, sbom-browser-arm64.cdx.json tam samo tak samo
ghcr.io/vstorm-co/agenticos-backend GHCR <version>, latest, edge, sha-<short>
ghcr.io/vstorm-co/agenticos-frontend GHCR tak samo
ghcr.io/vstorm-co/agenticos-browser GHCR tak samo
THIRD_PARTY_NOTICES.md repozytorium, na tym tagu pliki lock w tym commicie

Komponenty pisane w tym projekcie

Własne, na licencji Apache-2.0, w tym repozytorium. Nic tutaj nie jest komponentem firmy trzeciej i nic z tego nie pojawia się w notach.

Komponent Gdzie Czym jest Dostarczany w
API i platforma backend/app Aplikacja FastAPI: routes, services, repositories, runner agentów, rejestr capability agenticos-backend
Worker w tle backend/app/worker Pobiera zadania z kolejki w PostgreSQL - runy agentów, ingestię, synchronizacje, sweepy - i odpala harmonogramy wdrożenia (python -m app.worker) agenticos-backend
Migracje backend/alembic Łańcuch schematu, stosowany przez usługę migracji przed startem API agenticos-backend
Wiersz poleceń backend/app/commands agenticos cmd … — bootstrap, doctor, polecenia RAG agenticos-backend
Konsola frontend/src Aplikacja Next.js, którą widzi operator i użytkownik agenticos-frontend
Powłoka desktopowa desktop/ Okno Tauri wokół konsoli wdrożenia, budowane per platforma nie jest obrazem; zobacz aplikację desktopową
Strona dokumentacji docs/, mkdocs.yml Ta strona nie jest dostarczana w żadnym z obrazów

Zależności firm trzecich

Rozwiązywane z plików lock, a nie z tego, co akurat ma zainstalowana maszyna. Liczby zmieniają się z każdą zmianą zależności, więc wartością, której warto ufać, jest ta w pliku not dla wydania, które czytasz.

Zbiór Plik lock Rozwiązywany dla W notach
Dystrybucje Pythona backendu backend/uv.lock Linux, obie architektury, --no-dev Tak
Pakiety npm frontendu frontend/bun.lock produkcyjne domknięcie frontend/package.json Tak
Narzędzia deweloperskie i dokumentacyjne backendu backend/uv.lock, grupy dev i docs maszyna kontrybutora Nie: nie ma ich w żadnym obrazie
devDependencies frontendu frontend/bun.lock maszyna kontrybutora Nie: nie ma ich w obrazie
Crate'y Rusta powłoki desktopowej desktop/src-tauri/Cargo.lock platforma, dla której budowana jest powłoka Nie: nie ma ich w żadnym obrazie

Dwa audyty czytają te pliki lock przy każdym pull requeście. make audit rozwiązuje backend/uv.lock i sprawdza go wobec bazy podatności; make audit-frontend uruchamia bun audit --audit-level=high na frontend/bun.lock. Oba są w zadaniu Security Scan i w make check.

Obrazy uruchomieniowe

Obraz Baza Zawiera Budowany przez
agenticos-backend obraz Pythona oparty na Debianie API, worker, migracje, CLI, domknięcie zależności backendu, teksty licencji backend/Dockerfile
agenticos-frontend obraz Node'a oparty na Debianie standalone build konsoli, jej produkcyjne domknięcie zależności, fonty, noty per pakiet frontend/Dockerfile
agenticos-browser debian:bookworm-slim Chromium z oknem pod Xvfb, fonty z pulpitu i socat do jego DevTools - to, co uruchamia profil browser w compose dla capability przeglądarki docker/browser/Dockerfile

Wszystkie trzy są budowane dla amd64 i arm64, publikowane do GHCR i skanowane Trivy po publikacji. Pakiety Debiana instalowane przez każdy obraz są zapisane w licenses/components.toml wraz z ich pozycją licencyjną i pojawiają się w dokumentach CycloneDX, bo generator czyta opublikowany obraz, a nie drzewo źródeł.

Usługi, które wdrożenie uruchamia obok tych trzech — PostgreSQL z pgvector, Redis, reverse proxy, proxy wyjściowe przeglądarki (Squid) — operator pobiera od ich własnych wydawców. Są nazwane w plikach compose, nie są tu budowane i nie ma ich w SBOM-ie tego projektu.

Dostarczane zasoby

Zasób Gdzie Pochodzenie
Fonty interfejsu frontend/src/app/fonts/ Inter, Bricolage Grotesque, Geist Mono, wszystkie OFL-1.1
Glify marek i providerów frontend/src/components/brand/, backend/app/core/catalog/icons/ Font Awesome, Simple Icons i znaki rysowane ręcznie; źródła nazywa NOTICE
Katalog serwerów MCP backend/app/core/catalog/ Własne dane tego projektu o serwerach firm trzecich, nie same serwery
Domyślne profile modeli backend/app/core/catalog/ Własne dane tego projektu; same modele nigdy nie są dostarczane

Modele, providerzy i usługi: połowa należąca do wdrożenia

Nic z poniższych nie jest częścią wydania i żaden SBOM wygenerowany tutaj nie może tego wypisać. Każda pozycja jest komponentem działającego systemu i należy do własnego inwentarza wdrożenia.

  • Providerzy modeli. Ci z Anthropic, OpenAI, Google, Groq, xAI, Cohere, endpointu zgodnego z OpenAI lub lokalnego runtime'u, których wdrożenie skonfiguruje, wraz z przypiętymi identyfikatorami modeli. Zobacz modele.
  • Wagi modeli. Lokalny runtime je pobiera; ich licencje przegląda operator, a przegląd licencji mówi dlaczego.
  • Serwery MCP. Procesy firm trzecich lub hostowane endpointy, podłączane per organizacja. Katalog nazywa kandydatów; instalacja jest komponentem.
  • Źródła wiedzy i konektory. Google Drive, S3 i pozostałe, każde jako usługa firmy trzeciej osiągana poświadczeniem z vault.
  • Kanały. Przestrzenie Slacka, Telegrama i Mattermosta, w których wdrożenie jest zarejestrowane.
  • Magazyny danych i infrastruktura. PostgreSQL, Redis, storage obiektowy, reverse proxy, host oraz dowolny endpoint obserwowalności odbierający trace'y.

SBOM obrazu to nie inwentarz systemu

Dokumenty CycloneDX opisują trzy obrazy. Wdrożenie, które podłącza hostowany model, trzy serwery MCP i storage obiektowy, uruchamia komponenty, których żaden skan tych obrazów nie zobaczy. Traktowanie SBOM-u wydania jako całego inwentarza jest luką, którą ta sekcja ma nazwać.

Jak inwentarz powstaje i jest utrzymywany

Artefakt Wytwarzany przez Kiedy
Sześć SBOM-ów wydania zadanie sbom w .github/workflows/images.yml, po jednym na obraz na architekturę, z opublikowanych manifestów przy każdej publikacji; dołączane do wydania na tagu v*, w pozostałych przypadkach jako artefakt przebiegu
THIRD_PARTY_NOTICES.md make licenses gdy zmienia się plik lock; make licenses-check przerywa budowanie, gdy plik jest nieaktualny
Ta strona ręcznie gdy komponent zostaje dodany, usunięty lub przeniesiony między powyższymi zbiorami

make sbom zapisuje coś innego i nazwy to mówią: sbom-source-api.cdx.json i sbom-source-frontend.cdx.json są inwentarzami tego, co deklaruje drzewo źródeł, a nie tego, co zawiera obraz. Niosą grupy zależności deweloperskich i dokumentacyjnych, jeśli są zainstalowane, i żadnej z warstw pod spodem — bez obrazu bazowego, bez pakietów Debiana, bez zbudowanych artefaktów. Przydatne do przeczytania zbioru zależności bez pobierania dwóch obrazów; bezużyteczne jako dowód tego, co dostarcza wydanie, do czego służy sześć dokumentów powyżej. Wymaga zainstalowanego syfta i świadomie nie należy do make check.

Aby rozszerzyć inwentarz dla wdrożenia, weź SBOM wydania dla uruchamianej wersji, dodaj komponenty z powyższej sekcji wraz z wersją i dostawcą każdego z nich i trzymaj to obok własnej konfiguracji wdrożenia. Przegląd bezpieczeństwa jest miejscem, w którym recenzent klienta o to poprosi, a ochrona danych miejscem, w którym spisane są dane dotykane przez każdy z tych komponentów.