#mecha10 #download #framework #run-time #node-resolver

mecha10-node-resolver

Lightweight runtime resolver for downloading and spawning mecha10 framework nodes

3 releases

new 0.1.48 Jan 26, 2026
0.1.47 Jan 23, 2026
0.1.44 Jan 20, 2026

#14 in #mecha10

MIT license

19KB
332 lines

Mecha10 Node Resolver

Lightweight runtime resolver for downloading and spawning mecha10 framework nodes. This crate is designed to be embedded in robot binaries to enable runtime download of pre-compiled framework nodes, avoiding slow cross-compilation during build.

Architecture

Robot Binary (thin)
  │
  ├── Custom nodes (compiled in)
  │
  └── NodeResolver
        │
        ├── resolve("speaker") → downloads if needed
        │
        └── spawn("speaker", env) → runs as subprocess
                │
                └── ~/.mecha10/bin/speaker-0.1.44-aarch64-linux-musl

Usage

use mecha10_node_resolver::NodeResolver;
use std::collections::HashMap;

let resolver = NodeResolver::new()?;

// Check if it's a framework node
if NodeResolver::is_framework_node("@mecha10/speaker") {
    // Resolve (downloads if needed)
    let binary_path = resolver.resolve("speaker").await?;

    // Spawn as subprocess
    let mut env = HashMap::new();
    env.insert("REDIS_URL".to_string(), "redis://localhost:6379".to_string());
    let child = resolver.spawn("speaker", env).await?;
}

Dependencies

~12–31MB
~351K SLoC