Skills surrealism
SurrealDB Surrealism WASM extension development. Write Rust functions, compile to WASM, deploy as database modules. Part of the surreal-skills collection.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/24601/surrealdb/skills/surrealism" ~/.claude/skills/openclaw-skills-surrealism-90d8a4 && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/24601/surrealdb/skills/surrealism" ~/.openclaw/skills/openclaw-skills-surrealism-90d8a4 && rm -rf "$T"
manifest:
skills/24601/surrealdb/skills/surrealism/SKILL.mdsource content
Surrealism -- WASM Extensions for SurrealDB
New in SurrealDB 3. Write custom functions in Rust, compile them to WebAssembly (WASM), and deploy them as native database modules callable from SurrealQL.
Prerequisites
- Rust toolchain (stable) with
targetwasm32-unknown-unknown - SurrealDB CLI v3.0.5+ (
binary withsurreal
subcommand)surreal module - Familiarity with SurrealQL
andDEFINE MODULEDEFINE BUCKET
Development Workflow
1. Annotate -- surrealism.toml + #[surrealism] on Rust functions 2. Compile -- surreal module compile (produces .wasm binary) 3. Register -- DEFINE BUCKET + DEFINE MODULE in SurrealQL
Quick Start
# Create a new Surrealism project cargo new --lib my_extension cd my_extension # Add the WASM target rustup target add wasm32-unknown-unknown # Create surrealism.toml (required manifest) cat > surrealism.toml << 'TOML' [package] name = "my_extension" version = "0.1.0" TOML # Write your extension (annotate with #[surrealism]) cat > src/lib.rs << 'RUST' use surrealism::surrealism; #[surrealism] fn greet(name: String) -> String { format!("Hello, {}!", name) } RUST # Compile to WASM using SurrealDB CLI surreal module compile # Register in SurrealDB surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- Grant access to the WASM file DEFINE BUCKET my_bucket; -- Register the module functions DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm'; -- Use the function in queries SELECT my_extension::greet('World');
Use Cases
- Custom scalar functions callable from SurrealQL
- Fake/mock data generation for testing
- Domain-specific logic (language processing, quantitative finance, custom encoding)
- Access to niche Rust crate functionality too specific for core SurrealDB
- Custom analyzers for full-text search
Status
Surrealism is actively in development and not yet stable. The API may change between SurrealDB 3.x releases. File feedback via GitHub issues/PRs on the surrealdb/surrealdb repository.
Full Documentation
See the main skill's rule file for complete guidance:
- rules/surrealism.md -- project setup, Rust function signatures, WASM compilation, DEFINE MODULE/BUCKET syntax, deployment, testing, and best practices
- SurrealDB Extensions Docs -- official documentation
- CLI module command --
referencesurreal module