Template to platform

Start with a GitHub template

Choose embedded or remote-fleet. Both repositories wire in Unified Field products, and you decide what stays in your application.
Embedded or remote-fleetUnified Field platformYour application
Why Unified Field

Why Unified Field

Choose the embedded or remote-fleet GitHub template. Both start with the same platform products, account system, product shell, and application patterns; keep what fits and replace what does not.

One product shell

Signed-in applications share Orbital chrome, an app directory, workspace search, notifications, appearance controls, and help. Each product can add routes and utilities without rebuilding the shell.

Accounts and a first-run path

Lepton provides sign-in and account settings. The welcome page and route-aware spotlight tours give new users a way into the applications they can access.

Transparent data path

Valence keeps typed models and access policies together, and the schema and policy code remain open to inspection. Applications can show what data they use and why, while the schema records who may read or change each field and under which conditions.

User context follows the work

Higgs builds user-scoped Valence in a server function. When that request schedules work or publishes an event, Boson, Chronon, and Photon rebuild the captured actor through the same factory instead of silently switching to System access.

Search, notifications, and history

Workspace search and notifications are part of the signed-in shell. Record-history views can be composed into embedded and zone applications; that UI is not mounted on this public host.

Live UI and deployment

Photon keeps product views current. The embedded template runs the platform in one process; remote-fleet separates services and can add Gluon and Nucleus for cloud placement and data-service control.

Job definitions

Define Boson tasks and Chronon scripts with Rust macros. The same handler contracts run in-process or on remote workers, and their operator applications are being prepared for public release.
Valence schemaValence
Schema DSL + builder backends
use std::sync::Arc;
use valence::{
    Database, DatabaseFromEngine, FieldType, InMemoryBackend, Valence, MEM_ENGINE_ID,
    valence_schema,
};

const COUNTER_DB: DatabaseFromEngine = Database::from_engine("default", MEM_ENGINE_ID);

valence_schema! {
    Counter {
        table: "counter",
        version: "0.1.0",
        description: "Simple counter",
        database: COUNTER_DB,
        fields: [
            id: { r#type: FieldType::String, primary_key: true, required: true },
            value: { r#type: FieldType::Integer, required: true },
        ],
    }
}

let valence = Valence::builder()
    .add_backend("default", Arc::new(InMemoryBackend::new()))
    .build()?;
Boson taskBoson
Typed #[task] + enqueue
use std::sync::Arc;
use boson::{
    configure, task, Boson, ExecutionContext, JsonExecutionContextFactory,
    MemQueueBackend,
};

#[task(name = "process_order")]
async fn process_order(
    ctx: Box<dyn ExecutionContext>,
    order_id: String,
    amount_cents: u64,
) -> boson_core::Result<()> {
    tracing::info!(actor = ctx.label(), %order_id, amount_cents);
    Ok(())
}

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let boson = Boson::builder()
        .queue_backend(Arc::new(MemQueueBackend::new()))
        .execution_context_factory(JsonExecutionContextFactory)
        .auto_registry()
        .build()?;
    configure(boson);

    ProcessOrder::send_with(
        serde_json::json!({"System": {"operation": "checkout"}}),
        ProcessOrderParams {
            order_id: "ord-42".into(),
            amount_cents: 9900,
        },
    )
    .await?;
    Ok(())
}
Chronon scriptChronon
Cron job + typed #[chronon::script]
use std::sync::Arc;
use chronon::prelude::*;
use chronon::InMemorySchedulerStore;

#[chronon::script(name = "nightly_cleanup")]
async fn nightly_cleanup(
    ctx: Box<dyn ScriptContext>,
    retention_days: u32,
) -> chronon::Result<()> {
    println!("{}: retaining {retention_days} days", ctx.label());
    Ok(())
}

#[tokio::main]
async fn main() -> chronon::Result<()> {
    let chronon = Chronon::builder()
        .scheduler_store(Arc::new(InMemorySchedulerStore::new()))
        .context_factory(Arc::new(JsonScriptContextFactory))
        .embedded()
        .auto_registry()
        .build()?;

    let mut nightly = Job::new("nightly-schedule", "nightly_cleanup");
    nightly.schedule_kind = ScheduleKind::Cron;
    nightly.cron_expr = Some("0 2 * * *".into());
    nightly.timezone = Some("UTC".into());
    nightly.params_json = serde_json::json!({ "retention_days": 7 });
    chronon.coordinator_service().upsert_job(nightly).await?;

    chronon.run().await
}

Why benchmarks matter here

This table is the same completed-work slice as Resources: embedded SQLite and remote fleet, measured on AWS. A row appears only after a passing campaign. Scale-out is observed through four application nodes.

AWS performance study

ProductWorkloadProfileCompleted workp95Tested scale
ChrononDue-job burst with a five-minute cohortEmbedded SQLite1.7 completed jobs/s84 s1 host
ChrononDue-job burst with a five-minute cohortRemote fleet2.4 completed jobs/s68 s4 worker hosts
BosonBounded job completionEmbedded SQLite117 completed jobs/snot reported1 host
BosonBounded job completionRemote fleet199 completed jobs/snot reported4 worker hosts
PhotonDurable publish, one subscriberEmbedded SQLite100 completed publishes/s6.3 ms1 host
PhotonDurable publish, one subscriberRemote fleet2,250 completed publishes/s1.7 ms4 app hosts
PhotonDurable publish, four-subscriber fanoutEmbedded SQLite500 completed publishes/s6.0 ms1 host
PhotonDurable publish, four-subscriber fanoutRemote fleet3,250 completed publishes/s1.8 ms4 app hosts
SpectraDurable write then read-your-writeEmbedded SQLite80 completed writes/s4.3 ms1 host
SpectraDurable write then read-your-writeRemote fleet100,000 completed writes/s36 s4 writer hosts
ValenceHybrid lookup after a writeEmbedded SQLite5,740 completed lookups/s7.8 ms1 host
ValenceHybrid lookup after a writeRemote fleet17,715 completed lookups/s40 ms4 app hosts

Embedded and remote fleet

The embedded template runs Valence, Chronon, Boson, Photon, and Spectra in one process. The remote-fleet template splits those products across services and can add the Gluon and Nucleus control path.