sdk-rust README

The project's README from github.com/astrid-runtime/sdk-rust. As one markdown file: README.md.

astrid-sdk

License: MIT OR Apache-2.0 MSRV: 1.94

The Rust SDK for building Astrid capsules.

In the OS model, this is the standard library for user-space processes. It gives capsule authors safe, typed access to every kernel service: filesystem, IPC, networking, storage, approval, scheduling, and more. Capsule authors depend on astrid-sdk and serde. Everything else is handled.

Crates

Crate Role
astrid-sdk Safe Rust SDK for capsule authors. Mirrors std module layout: fs, net, process, env, time, log, plus Astrid-specific modules: ipc, kv, http, hooks, cron, uplink, identity, approval, runtime.
astrid-sdk-macros #[capsule] proc macro. Generates WASM ABI exports from annotated impl blocks: tool dispatch, command routing, hook handlers, cron handlers, install/upgrade entry points.
astrid-sys Raw WASM-to-host FFI bindings. The syscall table. Every parameter crosses as Vec<u8>. You should not use this directly.

Quick start

[dependencies]
astrid-sdk = "0.2"
serde = { version = "1.0", features = ["derive"] }
use astrid_sdk::prelude::*;

#[derive(Default)]
pub struct MyTools;

#[capsule]
impl MyTools {
    #[astrid::tool]
    fn search_issues(&self, args: SearchArgs) -> Result<SearchResult, SysError> {
        let token = env::var("GITHUB_TOKEN")?;
        let resp = http::get(&format!(
            "https://api.github.com/search/issues?q={}", args.query
        ))?;
        // ...
    }
}

The #[capsule] macro generates all WASM ABI boilerplate: extern "C" exports, JSON serialization across the boundary, tool schema generation, and dispatch routing.

Building capsules

Capsules compile to wasm32-wasip2:

rustup target add wasm32-wasip2
cargo build --target wasm32-wasip2 --release

Development

cargo build --workspace
cargo test --workspace -- --quiet
cargo clippy --workspace --all-features -- -D warnings

License

Dual-licensed under MIT and Apache 2.0.

Copyright (c) 2025-2026 Joshua J. Bouw and Unicity Labs.

sdk-rust (astrid-runtime/sdk-rust)

Searching Database…

Что это такое?Это Rust SDK для создания „капсул“ Astrid — изолированных WASM-модулей, которые действуют как user-space процессы в модели Astrid OS, с безопасным типизированным доступом к сервисам ядра вроде файловой системы, IPC, сети, хранилища, подтверждений и планирования.
astrid-sdk — это библиотека или генератор кода?И то и другое: astrid-sdk — безопасная Rust-библиотека, зеркалящая структуру модулей std (fs, net, process, env, time, log) плюс специфичные для Astrid модули, а astrid-sdk-macros даёт proc-макрос #[capsule], который генерирует весь WASM ABI boilerplate за вас.
Как собрать капсулу с этим SDK?Подключите astrid-sdk (и serde) в своём crate, пометьте реализацию макросом #[capsule], затем скомпилируйте crate под таргет wasm32-wasip2.
Нужно ли что-то помимо самого astrid-sdk?Авторам капсул достаточно добавить astrid-sdk и serde как зависимости — SDK сам берёт на себя JSON-сериализацию через границу WASM, генерацию схем инструментов и маршрутизацию вызовов.
Стоит ли вызывать astrid-sys напрямую вместо astrid-sdk?Нет — astrid-sys это лишь сырая таблица FFI-сисколлов WASM-to-host, и в README прямо не рекомендуется использовать её напрямую; используйте безопасные обёртки из astrid-sdk.
Что такое капсула?Капсула — изолированный WASM-модуль, который ведёт себя как user-space процесс в модели Astrid OS, получая типизированный доступ к сервисам ядра вместо сырых сисколлов.
С какими сервисами ядра может взаимодействовать капсула?Через выделенные модули SDK ей доступны IPC, key-value хранилище, HTTP, хуки, cron-планирование, uplink, идентификация, подтверждения и общие сервисы среды выполнения, плюс модули в духе std: fs, net, process, env, time и log.
От чего избавляет макрос #[capsule]?Он автоматически генерирует экспорты WASM ABI с extern "C", JSON-сериализацию через границу хоста, генерацию схем инструментов и маршрутизацию вызовов, так что astrid-sys напрямую трогать не придётся.
Size
0.4 MB
Stars
4.3K
Age
7mo
Commits · 90 Days