#osc #midi #artnet #dmx #protocols

app clasp-cli

Command-line interface for CLASP protocol servers and bridges

14 stable releases

new 4.5.0 Mar 30, 2026
4.4.0 Mar 29, 2026
4.0.3 Feb 22, 2026
3.3.1 Feb 18, 2026
0.1.8 Jan 22, 2026

#1998 in Network programming

MIT/Apache and AGPL-3.0-only

775KB
17K SLoC

clasp-cli

Command-line interface for CLASP protocol routers and connections.

Installation

cargo install clasp-cli

Or build from source:

git clone https://github.com/lumencanvas/clasp.git
cd clasp
cargo install --path crates/clasp-cli

Commands

Start CLASP Router

Important: You need a CLASP router running before protocol connections can work.

# Start a CLASP router (required - central message hub)
clasp server --port 7330

# Start router with specific transport
clasp server --protocol websocket --bind 0.0.0.0 --port 7330

Start Protocol Connections

Note: These commands create protocol connections that connect to the CLASP router. Each connection translates bidirectionally between its protocol and CLASP.

# Start an OSC connection (listens for OSC, routes to CLASP router)
clasp osc --port 9000

# Start an MQTT connection (connects to broker, routes to CLASP router)
clasp mqtt --host localhost --port 1883 --topic "sensors/#"

# Start a WebSocket connection
clasp websocket --mode server --url 0.0.0.0:8080

# Start an HTTP REST API connection
clasp http --bind 0.0.0.0:3000

How it works:

External Protocol ←→ Protocol Connection ←→ CLASP Router ←→ Other Connections/Clients

For example, clasp osc --port 9000:

  • Listens for OSC messages on UDP port 9000
  • Connects to CLASP router (default: localhost:7330)
  • Translates OSC ↔ CLASP bidirectionally
  • Routes through CLASP router to other clients/connections

Publish/Subscribe

# Publish a value
clasp pub /lights/brightness 0.75

# Subscribe to an address pattern
clasp sub "/lights/**"

Create Bridges

# Bridge OSC to MQTT
clasp bridge --source osc:0.0.0.0:9000 --target mqtt:localhost:1883

Configuration

# Show current configuration
clasp info

# Start with config file
clasp server --config clasp.toml

Key Management

Generate and inspect Ed25519 keypairs used for capability tokens and entity identity:

# Generate a new keypair (hex-encoded, saved with 0600 permissions)
clasp key generate --out root.key

# Show the public key
clasp key show root.key

# Show in did:key format
clasp key show root.key --format did

Capability Token Commands

Create, delegate, inspect, and verify Ed25519 capability tokens (requires caps feature):

# Create a root token with admin access, valid for 30 days
clasp token cap create --key root.key --scopes "admin:/**" --expires 30d

# Delegate with narrower scopes
clasp token cap delegate <parent-token> --key child.key --scopes "write:/lights/**"

# Inspect a token (decode without validation)
clasp token cap inspect <token>

# Verify a token against a trust anchor
clasp token cap verify <token> --trust-anchor root.key

Scope format: action:pattern where action is admin, write, read, or a custom string, and pattern is a CLASP address with optional wildcards.

Delegation rules: Child tokens can only narrow scopes (never widen), and cannot outlive their parent token.

Entity Token Commands

Generate entity keypairs and mint entity tokens (requires registry feature):

# Generate an entity keypair with metadata
clasp token entity keygen --out sensor.key --name "Sensor A" --type device

# Mint an entity token from a keypair
clasp token entity mint --key sensor.key

# Inspect an entity token
clasp token entity inspect <token>

Entity ID format: clasp:<base58> derived from the Ed25519 public key.

Options

Flag Description
-v, --verbose Enable verbose logging
--json Output in JSON format
--config Path to configuration file

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.


Maintained by LumenCanvas | 2026

Dependencies

~31–53MB
~843K SLoC