Backend-agnostic UI/visualisation system for atomr — actor-driven scenes across native, web, and mobile.
Project description
atomr-view — Heavy Client UI for Federated atomr Systems
Status: Implementation Phase Complete / Testing Suite Active
atomr-view is an actor-based view management system designed for heavy
client applications (Desktop, Mobile, Wasm) that integrate with federated
atomr clusters. It treats the UI rendering surface as a supervised peer
with network-shaped failure modes, using the actor model to bridge the gap
between remote state authority and local pixels.
Mental Model
In atomr-view, the UI is not a separate layer bridged by callbacks; it is a
subgraph of the local ActorSystem.
WindowActor: Owns an OS window, its declarative scene, and child regions.RegionActor: Manages a stateful subtree of the UI, typically subscribed to a remote sharded entity or a local streaming feed.UiBridge: An asynchronous, backpressured conduit between the actor system and the rendering thread (e.g.,winit+wgpu).SceneDescription: A declarative, keyed tree of semantic UI intent (Button, Text, etc.) that the backend reconciles against native widgets.
Key Features
- Location Transparency: UI actors interact with cluster-sharded actors using
the same
tell/ask/watchprimitives as local actors. - Backpressure Discipline: The
UiBridgeuses conflation for state updates, ensuring the UI thread only ever processes the freshest state available. - Declarative Reconciliation: Keyed tree-diffing computes minimal patches, preserving local UI state (like cursor position) across updates.
- Multi-Backend Strategy: Supports
winit+wgpu+eguifor desktop, with architectural hooks for Wasm (DOM) and Mobile (SwiftUI/Compose). - Python-First API: Full integration via PyO3, allowing UI actors and complex scene manipulation to be authored in Python.
Platform Backends
atomr-view supports multiple rendering surfaces via the UiBackend strategy:
- Desktop (
winit+wgpu+egui): The default reference implementation for high-performance desktop apps. - Bevy (
BevyBackend): Integrates the actor system with Bevy's ECS. Use theActorBackedcomponent to mirror ECS entities with long-lived actors for persistence and netcode. - Wasm (
WebDomBackend): Targets browser environments with a cooperative single-threaded scheduler that yields torequestAnimationFrame. - Mobile (
NativeShellBackend): Bridges to SwiftUI (iOS) and Jetpack Compose (Android) viauniffi, maintaining native UI performance while keeping business logic in Rust actors.
Quick Start
Rust
use atomr_view_core::prelude::*;
use atomr_core::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let sys = ActorSystem::create("App", Config::reference()).await?;
// 1. Initialize the bridge and backend
let (cmd_tx, cmd_rx) = mpsc::channel(100);
let (evt_tx, evt_rx) = mpsc::channel(100);
let bridge = UiBridge { cmd_rx, evt_tx };
// 2. Start the bridge actor
let bridge_actor = sys.actor_of(Props::create(move || {
UiBridgeActor::new(cmd_tx.clone(), evt_rx)
}), "ui-bridge")?;
// 3. Define a window actor
let main_window = sys.actor_of(Props::create(move || {
WindowActor::new("main", bridge_actor.clone())
}), "main-window")?;
// 4. Run the backend (blocks main thread)
WinitWgpuBackend.run(bridge);
Ok(())
}
Python
import atomr_view as view
ui = view.PyUiSystem()
ui.create_window("main", "My Federated App")
# Update the scene declaratively
root = view.SceneNode(
key=view.SceneKey(),
kind=view.NodeKind.Container(),
properties=view.PropertyMap({"layout": view.PropertyValue.String("vertical")}),
children=[
view.SceneNode(
key=view.SceneKey(),
kind=view.NodeKind.Text(),
properties=view.PropertyMap({"text": view.PropertyValue.String("Hello from Python!")}),
children=[]
)
]
)
ui.set_scene("main", view.SceneDescription(root))
Implementation Status
- Core Foundation:
UiBridge,SceneDescription, keyed diffing engine. - Desktop Backend:
winit+wgpu+eguireference implementation. - Python Bindings: PyO3-based bridge with full scene manipulation support.
- Testing: Property-based tests for diffing invariants and async integration tests.
- Bevy Integration:
BevyBackendbridging actors with ECS entities. - Wasm Support:
WebDomBackendwith cooperative cooperative scheduler hooks. - Mobile Flow:
NativeShellBackendwithuniffibindings for native shells.
Project Structure
crates/atomr-view-core: Core actor logic and scene engine.crates/atomr-view-backends: Swappable rendering strategies.crates/atomr-view-python: PyO3 integration.ai-skills/: Skills for AI assistants working withatomr-view.
License
Apache-2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atomr_view-0.3.2.tar.gz.
File metadata
- Download URL: atomr_view-0.3.2.tar.gz
- Upload date:
- Size: 50.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91d2d34acee2e97e7b464690dbf1e26054501c404e702784adbe51fd96c0f5ba
|
|
| MD5 |
2d54ce60c093927a8fcce5478cf25d77
|
|
| BLAKE2b-256 |
d0d3abfb118aec056887a8f35ee5db4168af69711c72bf634a6a4d5b542a56aa
|
Provenance
The following attestation bundles were made for atomr_view-0.3.2.tar.gz:
Publisher:
release.yml on rustakka/atomr-view
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atomr_view-0.3.2.tar.gz -
Subject digest:
91d2d34acee2e97e7b464690dbf1e26054501c404e702784adbe51fd96c0f5ba - Sigstore transparency entry: 1445498180
- Sigstore integration time:
-
Permalink:
rustakka/atomr-view@57ff84e31e99e67d0766c476a32538b3f078be5f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/rustakka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@57ff84e31e99e67d0766c476a32538b3f078be5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file atomr_view-0.3.2-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: atomr_view-0.3.2-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 529.1 kB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57bc3878482b263af8d13ac6c94e40a4e3c2d11e82eafde7893d81cd5d41f3a3
|
|
| MD5 |
56f41cee3ace308f9a6d340022c15a26
|
|
| BLAKE2b-256 |
e5d558dc3695919d47c2d0731bc352e766fc230460966005d978ca89f6eab508
|
Provenance
The following attestation bundles were made for atomr_view-0.3.2-cp310-abi3-win_amd64.whl:
Publisher:
release.yml on rustakka/atomr-view
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atomr_view-0.3.2-cp310-abi3-win_amd64.whl -
Subject digest:
57bc3878482b263af8d13ac6c94e40a4e3c2d11e82eafde7893d81cd5d41f3a3 - Sigstore transparency entry: 1445498346
- Sigstore integration time:
-
Permalink:
rustakka/atomr-view@57ff84e31e99e67d0766c476a32538b3f078be5f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/rustakka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@57ff84e31e99e67d0766c476a32538b3f078be5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file atomr_view-0.3.2-cp310-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: atomr_view-0.3.2-cp310-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.10+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
522792fa11d31b8b648893fd3d365de537f332d5dc4c45404799e7831aba4010
|
|
| MD5 |
b2ca77a7d6ca8dc75799abef3e01ec93
|
|
| BLAKE2b-256 |
d401ba70e48bfe321c8ad885597ea15c5c6913cc56c7319df72f3a30095aaa76
|
Provenance
The following attestation bundles were made for atomr_view-0.3.2-cp310-abi3-musllinux_1_2_x86_64.whl:
Publisher:
release.yml on rustakka/atomr-view
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atomr_view-0.3.2-cp310-abi3-musllinux_1_2_x86_64.whl -
Subject digest:
522792fa11d31b8b648893fd3d365de537f332d5dc4c45404799e7831aba4010 - Sigstore transparency entry: 1445498406
- Sigstore integration time:
-
Permalink:
rustakka/atomr-view@57ff84e31e99e67d0766c476a32538b3f078be5f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/rustakka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@57ff84e31e99e67d0766c476a32538b3f078be5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file atomr_view-0.3.2-cp310-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: atomr_view-0.3.2-cp310-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efdf2676089388525501e4b1d5c8d06f7638adf2de6528c759e855c4f5fa8809
|
|
| MD5 |
d42238e1fcbe5eb5d0fb6e0c8fb6b2cf
|
|
| BLAKE2b-256 |
c3af16a20d8dfe72a6497c2518dc66ecd749b12268dfa52e3581241b7eb26ecf
|
Provenance
The following attestation bundles were made for atomr_view-0.3.2-cp310-abi3-musllinux_1_2_aarch64.whl:
Publisher:
release.yml on rustakka/atomr-view
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atomr_view-0.3.2-cp310-abi3-musllinux_1_2_aarch64.whl -
Subject digest:
efdf2676089388525501e4b1d5c8d06f7638adf2de6528c759e855c4f5fa8809 - Sigstore transparency entry: 1445498532
- Sigstore integration time:
-
Permalink:
rustakka/atomr-view@57ff84e31e99e67d0766c476a32538b3f078be5f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/rustakka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@57ff84e31e99e67d0766c476a32538b3f078be5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file atomr_view-0.3.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: atomr_view-0.3.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a38c3e096114998156df692cbe85b61889a53dc4b83349570deaf818354d4958
|
|
| MD5 |
6a85b7ed680b4e41404293f0b53e211d
|
|
| BLAKE2b-256 |
416c5ad73e487a38ca94b0eb77a0fde7886e898ec6846f81afde97dd3613472e
|
Provenance
The following attestation bundles were made for atomr_view-0.3.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on rustakka/atomr-view
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atomr_view-0.3.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
a38c3e096114998156df692cbe85b61889a53dc4b83349570deaf818354d4958 - Sigstore transparency entry: 1445498483
- Sigstore integration time:
-
Permalink:
rustakka/atomr-view@57ff84e31e99e67d0766c476a32538b3f078be5f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/rustakka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@57ff84e31e99e67d0766c476a32538b3f078be5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file atomr_view-0.3.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: atomr_view-0.3.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5862d5348a69e3d711f9925f87e784d8cca74634c482d08ea11232ed63da252a
|
|
| MD5 |
113284ae737af7fa8eb6602e11da6637
|
|
| BLAKE2b-256 |
124141292ae622e112a05c9613ff736034a22c721205c354feea72409e12dd0a
|
Provenance
The following attestation bundles were made for atomr_view-0.3.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on rustakka/atomr-view
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atomr_view-0.3.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
5862d5348a69e3d711f9925f87e784d8cca74634c482d08ea11232ed63da252a - Sigstore transparency entry: 1445498263
- Sigstore integration time:
-
Permalink:
rustakka/atomr-view@57ff84e31e99e67d0766c476a32538b3f078be5f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/rustakka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@57ff84e31e99e67d0766c476a32538b3f078be5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file atomr_view-0.3.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: atomr_view-0.3.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.10+, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c25f1add169408fef5c0094b4b634d36ad0d71c2f72ce4da49b5ccc984998f6
|
|
| MD5 |
24c55571235e5e90b1f7f73ba7d48ec1
|
|
| BLAKE2b-256 |
4dda3901e08dedd9bed2f71078f296825f385f4767e2bec0bfbc0f93bde384af
|
Provenance
The following attestation bundles were made for atomr_view-0.3.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:
Publisher:
release.yml on rustakka/atomr-view
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atomr_view-0.3.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl -
Subject digest:
6c25f1add169408fef5c0094b4b634d36ad0d71c2f72ce4da49b5ccc984998f6 - Sigstore transparency entry: 1445498442
- Sigstore integration time:
-
Permalink:
rustakka/atomr-view@57ff84e31e99e67d0766c476a32538b3f078be5f -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/rustakka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@57ff84e31e99e67d0766c476a32538b3f078be5f -
Trigger Event:
push
-
Statement type: