Atlas App is a host for installable extensions. The host is implemented in Rust, with a Tauri desktop and Android application and a standalone HTTP/gRPC-Web server. Each extension can provide a native shared library implementing the versioned C ABI, a client-rendered web frontend, and a manifest.json file. The host loads the library, starts its gRPC service, and mounts its web assets and API under the extension's route.
| Path | Contents |
|---|---|
app/ | Tauri desktop/Android application, standalone server, authentication, and extension host |
interface/ | Rust definitions for the plugin C ABI and generated C header |
build/ | Rust build utilities and CMake helpers for manifests and extension ZIPs |
examples/greeter/ | A C++/gRPC extension with a web frontend |
proto/ | Protobuf definitions for the plugin and authentication APIs |
package.json).ANDROID_NDK_HOME.Clone with submodules, or initialize it in an existing checkout:
git submodule update --init --recursive
yarn installRun the application scripts from the app/ directory:
cd app
yarn build:app # Tauri desktop application
yarn build:server # standalone atlas-server binary
yarn build:android # Android app packageThe Android build uses Tauri's generated Android project under app/gen/android. If it has not been initialized, run yarn tauri android init from app/ after installing/configuring the Android toolchain. See app/README.md for build and development details.
The build/ crate contains manifest and ZIP packaging tools. CMake at the repository root imports the Rust crates and provides the plugin_zip target for extensions. To build the Greeter example on Linux:
cmake --preset "Examples Linux Debug"
cmake --build --preset "Examples Linux Debug"The preset enables vcpkg manifest mode and builds the packaged extension ZIP. Other example presets are listed in CMakePresets.json. See build/README.md and examples/greeter/README.md.
The public C header is generated from the Rust interface crate with cbindgen:
cargo build -p interfaceThis writes interface/gen/inc/plugin_api.h. See interface/README.md for the ABI contract and generation details.
An extension ZIP contains a root manifest.json, optional client-only static web files in client/, and one or more platform shared libraries under lib/<architecture>/. The shared library exports the lifecycle API declared by the C-ABI header. The manifest describes the extension and the ABI version it targets.
Start from examples/greeter/ for a working CMake-based example, and see its README for the complete metadata field table and packaging steps. Runtime extensions can be installed through the host's plugin management UI or the server's plugins add command; a host restart is required before newly installed extensions are activated.
The manifest is a protobuf-JSON PluginMetadata object. Its JSON keys and enum values use the spellings shown here:
| Field | Type / values | Meaning |
|---|---|---|
interfaceVersion | Object: major, minor, patch | ABI version; the current host requires 1.0.0 exactly |
name | String | Plugin identity and shared-library basename |
route | String | Non-empty route where the plugin UI and API are mounted |
serviceName | String | Required, non-empty service label |
enabled | Boolean | Whether the plugin should be activated |
source | PLUGIN_SOURCE_RUNTIME, PLUGIN_SOURCE_BUNDLED | Runtime-installed or host-bundled plugin |
type | PLUGIN_TYPE_LIBRARY, PLUGIN_TYPE_BINARY | Plugin kind; the current runtime loader uses shared libraries |
An app for web, desktop, and mobile with a gRPC API
0
21
0
0