DSH Plugins Marketplace

DSH Plugins

Plugins

/

rotifer-playground

r

rotifer-playground

Discovered6

Local dev environment — Rust core + TypeScript CLI for gene development & Arena competition

Rotifer Playground

CI npm License: Apache-2.0 Node.js Protocol Discord

Development environment for the Rotifer ProtocolWASM-Native, Polyglot by Design: build genes in TypeScript / Rust / AssemblyScript / Go / C, compete in Arenas, share via Cloud, and simulate agent evolution.

Status: v0.26.x — Genes can now refuse malformed input instead of crashing or silently answering anyway. Publishing a gene enforces spec §47.5 T1 (ADR-333): at least one case it must handle correctly, one it must refuse — crashing always fails, refusing without crashing passes, answering passes only against a declared expectedOutput/expectedSchema, answering with nothing declared fails — and 10 generated inputs that must all produce schema-legal output. Refusal now has a real channel rather than a guess: a gene returns an object whose only key is __rotifer_error and the host reports INVALID_INPUT (ADR-334), the ErrorCode spec §4.2 has defined since the beginning and nothing had ever produced. rotifer test --scaffold <gene> writes a starting suite. The gate closes a real defect: genes were being published declaring Native fidelity with no compiled artifact at all — rotifer install would succeed and rotifer run would then fail with "No runnable source found." 13 of our own Native genes were in that state; all are fixed and republished, and rotifer install/rotifer compile now say so explicitly rather than reporting success when they meet the mismatch. See CHANGELOG.md for full release history. Automatic peer discovery, internet-wide reach, and L4 Collective Immunity are later milestones — see Implementation Status below.


Install

npm install -g @rotifer/playground

Or use directly via npx:

npx -y @rotifer/playground@latest init my-agent

Requirements: Node.js >= 22.18.0 (genes are TypeScript; the CLI relies on Node’s built-in type stripping to run them from source)


First Agent in Seconds

rotifer init my-agent && cd my-agent
rotifer hello --template quality-advisor

rotifer init bootstraps the local Arena and Genesis genes. rotifer hello --template quality-advisor is the recommended preset-agent entrypoint for a first run.


30-Second Demo

$ rotifer init my-agent

  Rotifer Protocol - Agent Workspace Initialization
  ───────────────────────────────────────────────────
✓ Agent workspace scaffolding created
ℹ Installing Genesis genes...
✓ 5 Genesis genes installed
✓ 1 starter gene installed for the recommended template (quality-advisor)

  Starter Genes
  ───────────────
  Name                        Domain            Fidelity
  ────────────────────────────────────────────────────────
  genesis-file-read           filesystem        Native
  hello-world                 general           Wrapped
  gene-health-scanner         meta.diagnostics  Native
  genesis-l0-constraint       safety            Native
  genesis-web-search          search            Native
  genesis-web-search-lite     search            Native
  genesis-code-format         tooling           Native
ℹ 7 starter gene(s) across 6 domain(s)

  Agent workspace "my-agent" is ready!

One command scaffolds the workspace and ships the starter genes, including the one the recommended template needs. rotifer hello --template quality-advisor then turns them into your first preset agent.


Three-Act Experience (ADR-11)

Act 1 — Wow (30 seconds)

rotifer init my-agent && cd my-agent

You see an Arena with 6 genes ranked by fitness. No configuration needed.

Act 2 — Aha (5 minutes)

rotifer hello --template quality-advisor # Run the recommended preset Agent
rotifer agent list                 # Inspect the generated hello-* agent

Bundled genes become a working preset agent in seconds.

Act 3 — Hooked (30 minutes)

Turn your own code into a gene, then build a custom agent:

# Wrap existing code as a gene
rotifer scan genes/                    # Discover candidate functions
rotifer wrap hello-world               # Wrap as a gene (generates Phenotype)
rotifer test hello-world               # Run sandbox tests (WASM sandbox for compiled genes)
rotifer test hello-world --compliance  # Run structural compliance checks
rotifer arena submit hello-world       # Submit to Arena (admission gate)
rotifer arena list                     # See your gene's ranking

# Write a gene in TypeScript — same language, zero learning curve
mkdir genes/my-search && cat > genes/my-search/index.ts << 'EOF'
export function express(input: { query: string }) {
  return { results: [`Found: ${input.query}`], total: 1 };
}
EOF

rotifer wrap my-search --domain search
rotifer compile my-search           # TS → JS → WASM → Rotifer IR
rotifer arena submit my-search      # Watch it climb the rankings
rotifer arena list --domain search # Compare against Genesis genes

# Create an Agent with a gene genome (supports Seq, Par, Cond, Try)
rotifer agent create search-bot --genes genesis-web-search my-search
rotifer agent create parallel-bot --genes web-search doc-search --composition Par
rotifer agent list

# Run the Agent — WASM sandbox execution preferred
rotifer agent run search-bot --input '{"query":"rotifer protocol"}'
rotifer agent run search-bot --no-sandbox  # Force Node.js fallback

rotifer compile auto-detects TypeScript genes and compiles them to Native WASM. No separate toolchain required.


Architecture

playground/
├── crates/
│   ├── rotifer-core/        Rust: types, sandbox, arena, algebra, fitness, storage
│   └── rotifer-napi/        Native bridge: Rust ↔ Node.js FFI
├── src/                     TypeScript CLI and supporting modules
│   ├── commands/            CLI command modules
│   ├── cloud/               Cloud Binding client (auth, API, types)
│   └── utils/               Config, display, native binding, IR compiler
├── genes/                   Bundled gene directories
├── supabase/                Cloud Binding self-hosting guide
├── templates/               Gene + composition scaffolds
└── tests/                   Unit + E2E test suites

Layers

| Layer | Technology | Responsibility | |-------|-----------|----------------| | CLI | TypeScript + commander.js | User interface, command routing, display | | Bridge | Native bridge (cdylib) | Rust-to-Node.js FFI binding | | Core | Rust + WASM runtime | WASM sandbox (Direct + WASI), Arena engine, Algebra executor, Fitness computation, SQLite storage |


CLI Commands

Run rotifer --help for the grouped command list. The commands below cover the main local, cloud, arena, and agent workflows.

| Command | Description | |---------|-------------| | rotifer init [workspace-name] | Initialize a new Agent workspace with Genesis genes | | rotifer hello [--template <id>] | Create and run a preset agent from curated templates inside a Rotifer Agent workspace | | rotifer scan [path] | Scan for candidate genes and local skills | | rotifer wrap <gene-name> | Wrap a function or SKILL.md as a gene (offers to publish, default yes — see Publishing by default) | | rotifer test [gene-name] | Test a gene (WASM sandbox preferred, --compliance for structural checks) | | rotifer compile [gene-name] | Compile gene to Rotifer IR (auto TS→WASM) | | rotifer run <gene-name> | Execute a single local gene directly | | rotifer list | List local genes in the current Agent workspace | | rotifer login | Log in to Rotifer Cloud (OAuth) | | rotifer logout | Log out from Rotifer Cloud | | rotifer publish [gene-name] | Publish gene(s) to Rotifer Cloud | | rotifer search [query] | Search genes on Rotifer Cloud | | rotifer install <gene-ref> | Install a gene from Cloud (UUID, name, or content hash) | | rotifer info <gene-ref> | View gene details (local or Cloud) | | rotifer stats <gene-ref> | View download statistics for a gene | | rotifer compare [gene-refs...] | Compare 2–5 genes by reputation and downloads | | rotifer reputation [gene-ref] | View gene and creator reputation scores | | rotifer versions <owner> <gene-name> | View version history chain for a gene | | rotifer arena submit <gene-name> | Submit a gene to the Arena (--cloud for Cloud Arena) | | rotifer arena list | List Arena rankings (--cloud for Cloud Arena) | | rotifer arena watch <domain> | Watch Arena rankings live (--cloud for Cloud Arena) | | rotifer agent create <agent-name> | Create an Agent (--composition Seq\|Par\|Cond\|Try\|TryPool) | | rotifer agent list | List all agents | | rotifer agent run <agent-name> | Execute genome pipeline (WASM sandbox, --no-sandbox for Node.js) | | rotifer vg [path] | V(g) security scan for gene/skill code | | rotifer network | P2P gene network commands (see rotifer network --help) | | rotifer self-update | Check for updates and upgrade Rotifer packages | | rotifer config | Manage global Rotifer configuration | | rotifer whoami | Show current authentication status |


Publishing by default

rotifer wrap asks whether to publish the gene it just created, and the answer defaults to yes — pressing Enter uploads it to Rotifer Cloud:

Publishing is on by default — turn it off with 'rotifer config set default-publish false'
Publish 'my-search' to Rotifer Cloud? [Y/n]

Answering n keeps the gene local; rotifer publish my-search uploads it later. The default exists because a registry only helps people find genes that reached it, and the step most often skipped is the upload.

It asks rather than uploads, and it only asks when there is someone to answer:

| Situation | What happens | |---|---| | rotifer config set default-publish false (or ROTIFER_AUTO_PUBLISH=0) | Never asks. rotifer publish still works. | | No terminal — CI, a pipe, a script | Never asks and never publishes, so a build that wraps genes does not upload them. | | Signed out | Never asks; points at rotifer login. | | Native gene with no gene.ir.wasm | Never asks; points at rotifer compile, which publishing would require anyway. |

Publishing this way runs the same gates as rotifer publish: V(g) security scan, IR integrity, phenotype schema, secret scan, and dependency audit. A gene that fails them is not uploaded, and wrap still reports the gene as created.


Genesis Genes

Five pre-installed genes ship with every Agent workspace:

| Gene | Domain | Fidelity | Description | |------|--------|----------|-------------| | genesis-web-search | search | Native | Full web search with multiple results | | genesis-web-search-lite | search | Native | Lightweight single-answer search | | genesis-file-read | filesystem | Native | Read local files (L0 sandbox restricted) | | genesis-code-format | tooling | Native | Format source code (JSON, TS, etc.) | | genesis-l0-constraint | safety | Native | L0 sandbox constraint checker |


Gene Composition (Algebra)

Genes can be composed using the Rotifer Algebra:

| Operator | Description | Example | |----------|-------------|---------| | Seq | Sequential pipeline | Search → Format | | Par | Parallel with merge | Search + Search-Lite, take first | | Cond | Conditional branch | If query.length > 100 → Lite, else → Full | | Try | Fault tolerance | Primary with fallback | | Transform | Map/transform | Inner gene → mapper gene |

See templates/composition/ for JSON examples.


Examples

The examples/ directory contains reference implementations and experiments:

| Directory | Description | |-----------|-------------| | examples/mcp-migration/ | How to migrate MCP Tools into Rotifer Genes | | examples/api-apocalypse/ | API fault-tolerance experiment — baseline vs Rotifer agent with domain failover |


Development

git clone https://github.com/rotifer-protocol/rotifer-playground.git
cd rotifer-playground

# TypeScript CLI
npm install
npm run build          # Build to dist/
npm test               # Run the TypeScript test suite (Vitest)
npm run lint           # Type-check and lint src/

# Rust Core (requires Rust toolchain)
cargo check -p rotifer-core
cargo test -p rotifer-core

# Full demo
bash demo.sh

Implementation Status

This project is in alpha. The table below shows the honest implementation status of each URAA layer.

| URAA Layer | Spec Name | Status | What Works | What's Planned | |------------|-----------|--------|------------|----------------| | L0 | Kernel | ~35% | L0Gate pre-execution checks (domain, resource, network, filesystem); Audit log | EthicalBoundary, State Anchoring, Trust Anchor | | L1 | Synthesis | ~95% | WASM sandbox, IR compiler, TS→WASM compilation, native bridge | Full WASI capability negotiation | | L2 | Calibration | ~40% | Schema validation, sandbox testing, --compliance checks | Static analysis, controlled field trial | | L3 | Competition | ~60% | Arena ranking, F(g) multiplicative model, R(g) reputation, Cloud Registry | P2P HLT broadcasting (planned), hot-loading, retirement | | L4 | Collective Immunity | 0% | — | Threat broadcasting, emergency rollback, cross-node consensus | | Algebra | Composition | ~90% | All 5 operators in Rust; CLI supports Seq/Par/Cond/Try | DataFlowGraph |

Key limitation: L4 depends on a mature L3 P2P layer. P2P is runnable today but experimental and off by default, and still lacks automatic peer discovery and internet-wide reach. Full L4 is targeted for v1.x.


Protocol Compliance

Targets Rotifer Protocol Specification (Frozen). See Implementation Status for detailed layer-by-layer coverage.

| Depth | Components | Notes | |-------|------------|-------| | Full | Phenotype, AlgebraExpr, Fitness F(g), Arena | Core gene lifecycle | | Functional | WASM Sandbox, L0 Gate, Reputation R(g) | L0 at ~35%, expanding | | Simplified | Agent Lifecycle, Gene Lifecycle, RotiferBinding | MVP subset | | Planned | P2P HLT, Formal Verification, Cross-Binding Consistency, ZK Proofs, L4 Immunity | Roadmap items |

Changes driven by implementation feedback are proposed through the ADR process.


Roadmap

See CHANGELOG.md for detailed release history. Upcoming milestones:

  • v0.9 — economic framework design
  • v0.9.1 — P2P network (metadata discovery)
  • v1.0 — Stable release: L0-L3 complete, economic system, security audit

Community

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

Apache-2.0 with Rotifer Safety Clause

This project uses the Apache License 2.0 with an additional Rotifer Safety Clause that requires any deployment to either preserve the L0 Constraint Layer or clearly disclose modifications to it.


The Rotifer Protocol is alive.

Comments

Loading…

Similar plugins

DSH-arena

by Apageoflove

Local-first experiment and evaluation workbench plugin for DeepSeek Harness (DSH).

Manifest valid

4

5/wk

MIT

JavaScript

Aug 27, 2026

dsh plugin --profile web add dsh-arena

by zhn1100

Reproducible DeepSeek Harness plugin development environment

Manifest valid

3

19/wk

MIT

TypeScript

Aug 16, 2026

dsh plugin --profile web add dsh-forge

by Missher12

Privacy-bounded self-improvement plugin for DeepSeek Harness

Workflow & AutomationTerminal & ClientsManifest valid

0

MIT

TypeScript

Sep 8, 2026

dsh plugin --profile web add dsh-missher-evolution

by striveh

Read-only local capability and community plugin discovery for DeepSeek Harness

Development & InfrastructureManifest valid

0

MIT

TypeScript

Sep 8, 2026

dsh plugin --profile web add dsh-capability-resolver

by Drhushi

DeepSeek Harness 插件 —— 对话式游戏本地化:跟 AI 助手说说话,完成游戏翻译全流程。引擎适配器架构,首发支持 Ren'Py。

Manifest valid

21

MIT

TypeScript

Sep 14, 2026

dsh plugin --profile web add dsh-plugin-tav2

by founder987

适合编码研发的UI界面

Manifest valid

0

TypeScript

Aug 31, 2026

dsh plugin --profile web add dsh-develop-ui