scio
scio is a URI-based data catalog with atomic operations for Go. It serves as the authoritative map of data sources in your system, providing topology intelligence and type-agnostic access via atoms.
What scio Does
- Registers storage resources — Accepts atomic providers from grub (databases, stores, buckets)
- Routes operations via URI —
db://users/123,kv://sessions/abc,bcs://docs/report.pdf - Provides topology intelligence — Knows what resources exist, where, and their relationships
- Enables type-agnostic access — Works with atoms, never needs to know your types
Core Concepts
URI Addressing
Every data access point is addressed by a URI:
| Variant | Pattern | Example |
|---|---|---|
db:// | table/key | db://users/123 |
kv:// | store/key | kv://sessions/abc |
bcs:// | bucket/path | bcs://docs/reports/q4.pdf |
Atomic Operations
scio operates on atoms — type-segregated data structures from the atom library. This enables infrastructure code to work with data without knowing user types.
Spec Tracking
When resources are registered, scio tracks their specs (type metadata). This enables:
- Finding all resources that share a type
- Discovering related resources
- Field-based resource discovery
Use Cases
- Service infrastructure — Route data access without coupling to user types
- Data pipelines — Process data across multiple storage backends uniformly
- System introspection — Understand the data topology of your application
- LLM integration — Provide context about available data sources
Dependencies
scio builds on the zoobzio ecosystem: