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 cztery 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
ghcr.io/vstorm-co/agenticos-backend GHCR <version>, latest, edge, sha-<short>
ghcr.io/vstorm-co/agenticos-frontend 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 Runner Prefecta dla ingestii, synchronizacji, sweepów i wyzwalaczy harmonogramu 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

Oba 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 dwóch — PostgreSQL z pgvector, Redis, reverse proxy, serwer Prefecta — 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

Dwa dokumenty CycloneDX opisują dwa 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
Cztery SBOM-y 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żą cztery dokumenty 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.