Atlas module

Discover applications and channels.

CrateDescriptionDocs
selium-atlasClient library that applications implementdocs.rs
selium-atlas-protocolInternal library that defines the client-server protocoldocs.rs
selium-atlas-serverWASM module that manages the URI databaseN/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::matching
  • SubscriberAtlasExt::connect
  • ServerAtlasExt::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.