What scomp does
Negotiates sessions
A client (the agent’s harness) and a server (the runtime host) exchange protocol version, capabilities, and a session id. Sessions outlive connections.
Carries eval and invoke
The client sends code to evaluate. Either peer can invoke the other’s bindings or function references, at any time, bidirectionally.
Scomp vs MCP
The two protocols solve adjacent problems. They compose; they don’t compete.MCP
Exposes individually-callable tools to a stateless agent loop. Each tool call is an isolated round-trip; the agent reasons about which tool to call next from the outside.
Scomp
Projects an agent into a stateful, programmable environment where tool calls compose. The agent writes code that calls bindings, captures results, branches, retries — all inside a single eval.
What ships today
Protocol spec
PROTOCOL.md — JSON-RPC 2.0 over any bidirectional transport. Open spec, implementable in any language.Rust SDK
Client + server, ergonomic macros (
#[binding]), QuickJS reference runtime, WebSocket transport. All optional via feature flags.TypeScript SDK
Planned. Same protocol; the spec is intentionally language-neutral.
Where to next
Build something
Quickstart: a server + client in ~5 minutes using the Rust SDK.
Read the model
Concepts: the mental model — peers, bindings, sessions — without any code.
Implement scomp
Protocol overview: what the wire looks like and how to write a conformant implementation.
See examples
Demos: working examples in the repo that show common patterns end-to-end.
Scomp is pre-1.0 and the protocol is at version 0.1. Breaking changes may land at minor-version boundaries until 1.0.