How linus-berg/backpack works
Backpack is a distributed artifact collection and tracking system, not a repository-serving platform. The documented flow begins when a user submits an artifact through the API: ecosystem processors resolve versions and dependencies, Core.Gateway records changes and routes collection work, protocol-specific collectors fetch missing files into S3-compatible storage, and Tracker.Scheduler periodically re-tracks artifacts. The graph preserves the documented stages and major ecosystem/protocol branches; several links are based on the README because their service implementations were not sampled.
Main entry points: FileSystem.cs Protocol collectors · GatewayProcessingService.cs Gateway processing · Program.cs REST API · ArtifactController.cs Artifact operations
Components 30
API and management
- REST API
Integration.API/Program.cs - Artifact operations
Integration.API/Controllers/ArtifactController.cs - API-key authentication
Integration.API/ApiKeyAuthenticationHandler.cs
Artifact orchestration
- Gateway processing
Core.Gateway/GatewayProcessingService.cs - Gateway consumers
Core.Gateway/Consumers - Collector router
Collector.Router/Router.cs
Ecosystem processors
- Ecosystem processors
Processor.Npm - Npm processor
Processor.Npm/Npm.cs - NuGet processor
Processor.Nuget/Nuget.cs - PyPI processor
Processor.Pypi/Pypi.cs - Container processor
Processor.Container/Worker.cs - Helm processor
Processor.Helm/Helm.cs - Terraform processor
Processor.Terraform/Terraform.cs - Hugging Face processor
Processor.HuggingFace/HuggingFace.cs - GitHub releases processor
Processor.Github.Releases/GithubReleases.cs - JetBrains processors
Processor.Jetbrains.IDE/Jetbrains.cs - Other ecosystem processors
Processor.Rancher/Rancher.cs
File collectors
- Protocol collectors
Collector.Kernel/FileSystem.cs - HTTP and mirror
Collector.Wget/WebMirror.cs - Git collector
Collector.Git/Git.cs - Container collectors
Collector.DockerArchive/Docker.cs - Other collectors
Collector.Rsync/RSync.cs
Persistence and scheduling
- Storage filesystem
Collector.Kernel/FileSystem.cs - S3-compatible storage
Collector.Kernel/Storage/Minio/MinioStorage.cs - MongoDB metadata
Core.Infrastructure/MongoDatabase.cs - Redis dependency cache
Core.Infrastructure/CoreCache.cs - Schedule tracking
Tracker.Scheduler/ScheduleManager.cs
Other components
- Artifact submitter
- RabbitMQ
- Artifact registries
Connections 31
- Artifact submitter → REST API: submits artifact
README.md - REST API → API-key authentication: authenticates requests
Integration.API/ApiKeyAuthenticationHandler.cs - REST API → Artifact operations: routes artifact requests
- Artifact operations → MongoDB metadata: reads and writes metadata
- Artifact operations → RabbitMQ: queues work
- RabbitMQ → Gateway consumers: delivers messages
- Gateway consumers → Gateway processing: invokes processing
- Gateway processing → MongoDB metadata: stores changes
README.md - Gateway processing → Collector router: routes files
README.md - Gateway processing → Ecosystem processors: dispatches dependencies
README.md - Ecosystem processors → Artifact registries: resolves versions
README.md - Npm processor → Artifact registries: queries packages
- NuGet processor → Artifact registries: queries packages
- PyPI processor → Artifact registries: queries packages
- Container processor → Artifact registries: queries images
- Helm processor → Artifact registries: queries charts
- Terraform processor → Artifact registries: queries providers
- Hugging Face processor → Artifact registries: queries models
- GitHub releases processor → Artifact registries: queries releases
- JetBrains processors → Artifact registries: queries products
- Other ecosystem processors → Artifact registries: queries ecosystems
- Collector router → Protocol collectors: dispatches collection
README.md - Protocol collectors → HTTP and mirror: selects protocol collector
- Protocol collectors → Git collector: selects protocol collector
- Protocol collectors → Container collectors: selects protocol collector
- Protocol collectors → Other collectors: selects protocol collector
- Protocol collectors → Storage filesystem: stores collected files
README.md - Storage filesystem → S3-compatible storage: reads and writes objects
Collector.Kernel/FileSystem.cs - Schedule tracking → MongoDB metadata: reads schedules
Tracker.Scheduler/ScheduleManager.cs - Schedule tracking → RabbitMQ: retracks artifacts
- Gateway processing → Redis dependency cache: tracks dependencies