Skip to content

kwhorne/elyra-framework

Repository files navigation

Elyra Framework

CI License: MIT

A Rust + Svelte 5 framework for hyper-responsive desktop apps. Laravel's ergonomics — container, providers, middleware, a typed bridge — but compiled, binary, and without runtime overhead.

The CLI is Ratatosk (rata): the squirrel that runs messages up and down Yggdrasil, between the Rust root and the Svelte crown.

📚 Documentation: elyracode.com/framework (source in docs/). This page is just a landing page.

Highlights

Layout

elyra-framework/
├── framework/   # elyra          — App, Container/Ctx, Command, events, shell (tao+wry)
├── macros/      # elyra-macros   — #[command] and #[derive(Model)]
├── database/    # elyra-db       — Database, migrations, models (GUI-free)
├── ratatosk/    # ratatosk       — the `rata` CLI
├── runtime/     # @elyra/runtime — invoke(), channel(), generated api.*
└── example/     # elyra-example  — the demo app / DX benchmark

Quick start

rata new myapp                 # scaffold (see docs/getting-started.md)
cd myapp
(cd app && npm install && npm run build)
rata codegen                   # generate typed bindings
cargo run                      # launch

Or run the bundled demo from this repo — no npm needed (serves a built-in fallback page):

cargo run -p elyra-example

A command, end to end

use elyra::{command, commands, App, Ctx};

#[command]
async fn greet(_ctx: Ctx, name: String) -> String {
    format!("Hello, {name}!")
}

fn main() -> elyra::Result<()> {
    App::new()
        .commands(commands![greet])
        .assets(elyra::asset_resolver::<Assets>())
        .run()
}
import { api } from "./bindings";              // generated by `rata codegen`
const greeting = await api.greet("World");     // (name: string) => Promise<string>

Cargo features (elyra crate)

Feature Enables
database Database, #[derive(Model)], migrations, App::database
tray App::tray, the system tray
updater the updater module (ed25519)
system native dialogs, shell-open, clipboard, notifications, paths
shortcuts OS-level global keyboard shortcuts
elyra = { version = "0.5", features = ["database", "tray", "updater", "system", "shortcuts"] }

Status

v0.5.1 — a big step toward an Electron alternative, with a built-in AI SDK and shared Cache / Storage / Queue facades over the backend-agnostic substrate-core contract. On top of the core (commands, events, DB/models, codegen, About + auto-update), 0.3 adds native system integration (dialogs, shell-open, clipboard, notifications, paths), UI components (dialogs, toasts, ⌘K command palette, context menu), window control + file drop + state persistence, global shortcuts, a native app menu, a settings store, autostart, sidecar processes, single-instance + deep-linking, and a Laravel-inspired AI SDK (agents, tools, sub-agents, structured output, streaming, provider tools, images, audio, embeddings, RAG, plus retries / failover / caching), plus ergonomic Cache / Storage / Queue facades that mirror the Askr/Laravel side. See the changelog and the roadmap.

Each milestone is compiled, clippy-clean, and tested (SQLite for the DB layer; GUI/OS integrations are launch-smoked, with visual / side-effecting steps called out as unverified).

Learn more

Full documentation lives at elyracode.com/framework. Start with getting started and the architecture overview, then dive into any topic from the documentation index.

License

Licensed under the MIT License.

See CONTRIBUTING.md and the Code of Conduct to get involved.

About

Elyra Framework — a Rust + Svelte 5 framework for fast, compiled, binary desktop apps. Laravel-like ergonomics: container, providers, middleware, and a typed MessagePack IPC bridge.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors