Features
Shipped provides a powerful set of features designed to make package tracking effortless and efficient.Multi-Provider Support
Track packages from multiple ecosystems in a single dashboard. Shipped currently supports:GitHub
Monitor repository releases with support for pre-releases and configurable release limits
NPM
Track NPM packages with specific version tags (latest, beta, etc.)
Docker Hub
Monitor container image tags across official and community images
PyPI
Track Python package releases from the Python Package Index
Provider-Specific Options
Each provider supports custom configuration:| Provider | Options | Example |
|---|---|---|
| GitHub | includePrereleases, maxReleases | Show pre-release versions and control release count |
| NPM | tags, npmx | Track specific tags like latest, beta, use npmx.dev links |
| Docker | tags | Monitor specific tags like latest, alpine, slim |
| Python | maxReleases | Limit number of releases displayed |
Custom Lists and Organization
Organize packages into custom lists with sections for better management:lists.yaml
Lists support hierarchical organization with groups and custom display names for better readability.
Real-Time Configuration Updates
Shipped uses file watching with hot-reloading to propagate configuration changes instantly:server/services/config/loader/service.ts
- Instant Propagation: Changes appear in the UI without manual refresh
- Debounced Updates: Changes are debounced (300ms) to prevent excessive reloads
- Graceful Fallback: If reload fails, the previous configuration is retained
- Configurable Polling: Supports both native file watching and polling mode
Smart Multi-Layer Caching
Shipped implements a sophisticated caching system to minimize API calls and improve performance:Two-Layer Cache Architecture
- L1 Memory Cache: Ultra-fast in-memory cache with size limits
- L2 File Cache: Persistent disk-based cache for long-term storage
server/services/package/cache.ts
Cache Coalescing
Shipped uses request coalescing to prevent duplicate API calls:- Deduplication: Multiple concurrent requests for the same package are coalesced into a single fetch
- In-Flight Tracking: Tracks pending requests to avoid redundant API calls
- Cache Statistics: Monitors hits, misses, and deferred requests for optimization
server/libs/cache/coalescing-cache.ts
Adaptive TTL
Cache duration adapts based on content:server/services/package/index.ts
Packages that don’t exist are cached for 10 minutes, while found packages use the configured TTL to optimize API usage.
Hash-Based Security
Shipped uses hash-based validation to ensure only pre-configured packages can be queried:server/services/package/index.ts
- Pre-computation: Package hashes are computed during configuration load
- Validation: Only requests with valid hashes are processed
- No Discovery: Prevents enumeration or discovery of arbitrary packages
Rate Limiting
Built-in rate limiting protects against abuse:server/rpc/middlewares/ratelimiter.ts
- Per-IP Limits: Rate limiting applied per client IP address
- Bogon Exclusion: Private/local IP addresses skip rate limiting
- Configurable Thresholds: Customize limits based on your needs
Concurrency Control
Package fetching is controlled with semaphores to prevent overwhelming external APIs:server/services/package/index.ts
- Controlled Concurrency: Maximum 10 concurrent package fetches
- API Protection: Prevents rate limit issues with external providers
- Resource Management: Avoids overwhelming system resources
What’s Next?
Configuration Guide
Learn how to configure lists, providers, and UI settings
Provider Details
Deep dive into each provider’s capabilities and options