Atlas module
Discover applications and channels.
| Crate | Description | Docs |
|---|---|---|
| selium-atlas | Client library that applications implement | docs.rs |
| selium-atlas-protocol | Internal library that defines the client-server protocol | docs.rs |
| selium-atlas-server | WASM module that manages the URI database | N/A |
Atlas is Selium's directory service. It lets application processes find external resources using stable names (sel:// URIs) instead of passing around hardcoded handles.
A typical application URI looks like:
sel://tenant/app.app/process:entrypoint
Note that this format is still being worked out, so some variance is expected.
Usage
The Atlas server registers itself as a singleton (selium.atlas.singleton). Processes can easily obtain a handle to the Atlas via the global Context.
To start the server module:
selium-runtime --module 'path=modules/selium_atlas_server.wasm;capabilities=ChannelLifecycle,ChannelReader,ChannelWriter,SingletonRegistry'Basic operations
At its core, Atlas is a small key/value directory with a few convenience queries:
get(uri)->Option<AtlasId>insert(uri, id)remove(uri)lookup(pattern)->Vec<AtlasId>
lookup uses prefix matching, so a broad pattern like sel://tenant/app can match sel://tenant/app as well as sel://tenant/app/ep1/prod/chan etc.
switchboard feature
The Atlas client ships with the switchboard feature (enabled by default) that adds helpers to wire matches into the switchboard:
PublisherAtlasExt::matchingSubscriberAtlasExt::connectServerAtlasExt::accept
It lets you discover endpoints by URI and immediately connect them without manual channel plumbing.
Log Registrar
Selium provides a log channel registrar hook, which the Atlas uses to facilitate registering a process's log channel via --log-uri. If Atlas server is not loaded, this is simply a noop.