Vitruvyan Docs
Package Manager — Sistema di Distribuzione Vitruvyan
Last updated: Mar 14, 2026 18:30 UTC Status: Implemented — Local + Remote registry, 8 manifests, first published package (Oculus Prime v1.0.0) CLI:
vit install,vit remove,vit list,vit search,vit info,vit setupArchitecture: Registry (local + remote) → Resolver → Downloader → Installer → State
Filosofia del Sistema
Il Package Manager di Vitruvyan è progettato come un sistema di distribuzione a due livelli ispirato ad apt/apk:
- Core tier — i componenti fondamentali dell'OS epistemico (Sacred Orders, Graph, Conclave, Agents) sono gestiti da
vit upgradee non sono installabili separatamente - Package tier — servizi opzionali, verticali di dominio ed estensioni sono installabili via
vit install
La distribuzione segue un modello community + premium:
| Tier | Accesso | Auth | Esempio |
|---|---|---|---|
| community | Download diretto da GitHub Releases | Nessuna | oculus-prime, neural-engine |
| premium | Download via VPS auth proxy con license token | VIT_LICENSE_TOKEN o .vitruvyan/license.key | frontier-odoo, frontier-sap |
Quick Start
Architettura — I Due Registri
Registry Locale
Il registry locale scopre i manifest .vit presenti nel repo:
Registry Remoto
Il registry remoto risiede su GitHub: vitruvyan/vitruvyan-packages
registry.json — indice centrale:
Caching: il registry.json viene cachato in .vitruvyan/cache/registry_cache.json con TTL di 1 ora. Se il remote è irraggiungibile, il client usa la cache scaduta come fallback.
Flusso di Installazione
Pacchetto Locale (già presente nel repo)
Pacchetto Remoto (download dal registry GitHub)
Pacchetto Premium (con license token)
Formato .vit
I manifest .vit sono file YAML che descrivono un pacchetto. Esempio completo:
Tipi di Pacchetto
| Tipo | Descrizione | Metodo Install | Esempio |
|---|---|---|---|
| service | Microservizio Docker standalone | docker_compose | service-neural-engine |
| order | Sacred Order (componente kernel) | docker_compose | order-babel-gardens |
| vertical | Meta-pacchetto dominio + servizi | script | vertical-finance |
| extension | Plugin/connettore per servizi esistenti | script | frontier-odoo (futuro) |
Lookup Multi-Chiave
Un pacchetto service-edge-oculus-prime è raggiungibile con qualsiasi di questi nomi:
| Chiave | Esempio |
|---|---|
package_name | service-edge-oculus-prime |
short_name | edge-oculus-prime |
cli_name | edge_oculus_prime |
Il registry converte automaticamente underscore → hyphen per la ricerca.
Dependency Resolution
Il resolver usa ordinamento topologico (DFS) per determinare l'ordine di installazione:
Conflict detection:
- Conflitti di nome — pacchetti che dichiarano
conflicts_with: [altro-pacchetto] - Conflitti di porta — stessa porta host già occupata da un pacchetto installato
Costruire e Pubblicare Pacchetti
Build Script
Output in dist/:
Il tarball contiene:
Pubblicazione su GitHub
Automazione Jenkins (futuro)
Il Jenkinsfile rileva automaticamente quali servizi sono cambiati e può:
- Build automatico dei tarball
.vit.tar.gzper i servizi modificati - Push dei tarball come asset su GitHub Releases
- Aggiornamento automatico di
registry.json
Variabili d'Ambiente
| Variabile | Default | Descrizione |
|---|---|---|
VIT_REGISTRY_URL | GitHub raw URL | URL del registry.json remoto |
VIT_RELEASE_BASE_URL | GitHub Releases URL | Base URL per download asset |
VIT_LICENSE_PROXY_URL | (nessuno) | URL del VPS auth proxy per pacchetti premium |
VIT_LICENSE_TOKEN | (nessuno) | License token per pacchetti premium |
File License
In alternativa alla variabile d'ambiente, il license token può risiedere in:
State Management
I pacchetti installati sono tracciati in .vitruvyan/installed_packages.json:
- Atomic writes: scrittura su file
.tmp→os.replace()per prevenire corruzioni - Nessun database: puro JSON su filesystem, zero dipendenze esterne
Creare un Nuovo Vertical
- Copiare
VERTICAL_TEMPLATE.vitcomevertical-<dominio>.vit - Compilare i campi specifici del dominio
- Posizionare in
packages/manifests/ - Creare codice dominio sotto
vitruvyan_core/domains/<dominio>/ - Test:
vit info <dominio>,vit install <dominio>
Esempio: vertical-finance
Sicurezza
- SHA-256 checksum su ogni tarball scaricato — mismatch = abort
- Path traversal protection — i tarball con path assoluti o
../vengono rifiutati - License token — mai hardcodato, sempre via env var o file dedicato
- No secrets nel codice — URL, password, token sono sempre env vars
- Atomic state writes — prevengono corruzioni da crash/interruzioni
Pacchetti Pubblicati
| Pacchetto | Versione | Tipo | Tier | Release |
|---|---|---|---|---|
| service-edge-oculus-prime | 1.0.0 | service | community | GitHub Release |
Documentazione Correlata
- Update Manager System — Sistema di aggiornamento core (
vit upgrade) - Vertical Implementation Guide — Costruire verticali di dominio
- Package Manager Contract V1 — Contratto binding per il package manager
.vitFormat Spec:vitruvyan_core/core/platform/package_manager/packages/VIT_FORMAT_SPEC.md