Skip to content

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
secrets Secrets — tokens in the OS keychain
elyra = { version = "0.5.7", features = ["database", "tray", "updater", "system", "shortcuts", "secrets"] }

Status

v0.5.7 — a hardening + Laravel-parity release on top of an already broad feature set.

The IPC surface is now gated: a random per-run token, CORS only for the dev origin, a capability model where destructive routes are opt-in, a default CSP, deny-by-default sidecar spawn, a policy for shell.open, and bounded + depth-checked request bodies. The event bus fans out per window (multi-window apps no longer lose events), a panicking command answers with an error instead of hanging the caller, and the settings store writes atomically.

The Laravel-shaped gaps are filled: Log, Config, Secrets over the OS keychain, TestApp, a schema builder with Rust migrations + seeders, and Eloquent-style pagination / aggregates / joins / soft deletes / transactions. Plus queue retries + a failed-job list, typed event channels in codegen, asset ETag/Range caching, a cross-platform app menu, and .deb / portable bundling.

Earlier releases brought the core (commands, events, DB/models, codegen, About + auto-update), 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, a Laravel-inspired AI SDK (agents, tools, sub-agents, structured output, streaming, provider tools, images, audio, embeddings, RAG, plus retries / failover / caching), and the shared Cache / Storage / Queue facades over the backend-agnostic substrate-core contract. See the changelog and the roadmap.

Every milestone is compiled, clippy-clean and tested — 250 Rust tests and 9 TypeScript tests, with the IPC surface covered end to end and CI running across macOS, Linux and Windows. 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

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages