Make the change
Claude reads a file, edits the current revision and sends the change to everyone in the room. The web and native editors show the actual shared source.
Your AI. Your editor. One shared Playground.
Create a temporary Rust workspace from your agent or application. Hand its link to another agent or open it in the browser. Share code and selections, then explicitly allow local Run/Debug on one client. The iPhone/iPad app is optional.
v0.3.5 · 491 KiB · Node.js 22+ · MIT SDK code · no account
“Add a Fibonacci function and show me how it works.”
fn fibonacci(n: u32) -> u64 {
let (mut a, mut b) = (0, 1);
for _ in 0..n {
(a, b) = (b, a + b);
}
a
}
fn main() {
println!("{}", fibonacci(10));
}Claude reads a file, edits the current revision and sends the change to everyone in the room. The web and native editors show the actual shared source.
A named selection shows which part Claude is explaining. Human selections also reach the MCP client, including Unicode text.
If another participant changes the project first, the proposed edit is rejected. Claude reads the new revision before trying again.
These Simulator captures come from a four-participant check: the MCP bridge, a browser and two Crabrix apps. Each app ran its own compiler and debugger.
Checks the version, Node, DNS, TLS, proxy settings and the relay. It opens no room, reads no source and changes no setting. Add --json for scripts.
A refused call carries a stable code such as REVISION_CONFLICT or ROOM_EXPIRED, whether a retry can help, and what to do next. A network problem no longer looks like an expired link.
Connecting again to the same room keeps its slot and the rights you already had. A failed switch to another room leaves you in the current one. Execution permission is never carried over.
An edit prepared before another client replaced the room’s snapshot is now refused, so the agent reads the project again first. If a reply is lost, OUTCOME_UNKNOWN says so and the next read settles it.
Create and apply accept edition, 2021 or 2024, in JavaScript, Rust and Go. Changing it needs the current revision and makes earlier build results out of date.
crabrix_runtime_inspect only reads a job’s status and output. crabrix_runtime_control stops or steps it. crabrix_runtime_job still works, with the same checks.
In the Playground, choose Connect AI to get the setup for your client and copy a task with its room link. Your agent appears in the room when it joins.
Choose the one way that fits your client. You do not need both. A Crabrix account is not required.
The plugin registers the MCP server and adds a handoff skill. Do not add a second server by hand.
/plugin marketplace add sergii-ziborov/crabrix-sdk
/plugin install crabrix@crabrixNeeds Node.js 22 or newer. Add this entry to the client’s MCP configuration and restart it. This is a documented configuration and has not been tested in every client.
{
"mcpServers": {
"crabrix": {
"command": "npx",
"args": ["-y", "crabrix@0.3.5"]
}
}
}Not supported yet. Crabrix has no remote MCP endpoint, so use a client that can start a local server.
It is the older name of this bridge. Remove that server and add one of the above, so the two do not join a room as separate participants. Existing room links keep working.
Check your setup with npx -y crabrix@0.3.5 doctor. Machine-readable setup: bootstrap.json.
Ask your connected agent to create a Crabrix Playground and return its temporary link, or open the web Playground and choose Share. Copy the entire link, including everything after #.
Give that link to Claude only when you want to grant its MCP host and model access to this room’s source. View-only links allow reading; editable links allow source changes.
Connect to this Crabrix Playground: [paste your private link]. Read the current source, add a Fibonacci function, and highlight the part you changed. Preserve everyone else’s work.
The MCP bridge appears as Agent · Crabrix. Watch its code and selection in the browser or optional app. Use Run or Debug yourself, or ask Claude to discover local clients. In Share on the selected client, compare its device/controller keys, choose operations and press Allow selected operations. Save a local copy before expiry.
No phone app is required. All three APIs use the same local protocol core and require Node.js 22+. Rust and Go embed the bridge; they do not need a global npm install. Code is MIT; brand artwork and app screenshots retain separate terms.
Import the library directly. ESM, CommonJS and self-contained TypeScript declarations are included.
npm install crabrix@0.3.5Typed source, revision, handoff and runtime calls through bounded local stdio. The crate is published on crates.io; Node.js 22+ runs its embedded protocol core.
cargo add crabrix@0.3.5Context-aware calls, bounded transport and explicit cleanup. The same source and execution permission rules apply.
go get github.com/sergii-ziborov/crabrix-sdk/go/crabrix@v0.3.5import { Crabrix } from "crabrix";
const agent = new Crabrix({ name: "Review agent" });
try {
await agent.create({ name: "Rust exercise", lifetimeMinutes: 60 });
const file = await agent.read("main.rs");
await agent.apply({
expectedRevision: file.revision,
changes: [{ path: file.path, text: file.text + "// reviewed\n" }],
});
const handoff = await agent.share("edit");
// Deliver handoff.link only to an intended recipient.
// Show handoff.expiresAt alongside your share action.
} finally {
agent.close();
}Public GitHub repository ↗ · SDK integration walkthrough · Run a shared Rust interview · Two agents: development, review and learning
The relay holds AES-256-GCM ciphertext in memory. The bridge decrypts locally using the key in your link fragment. Your MCP host and its model receive the source you ask them to read; their own data policies apply.
Up to four participants, 16 text files, 64 KiB per file and 128 KiB in total. No images, package archives or credentials are transferred. Rooms expire after the chosen lifetime; a server restart can end one earlier. There is no account storage.
crabrix_disconnect removes the bridge’s participant and releases its in-memory document. It does not close the other editors. The room creator can end the room from Share.
Ask Claude to end a bridge-created room before disconnecting if you want to close it early. An ordinary edit link does not grant ownership.
Execution stays on the selected device/browser. MCP permission starts off, lasts at most ten minutes and can be revoked. Shared execution accepts manifest-free standard-library Rust and local modules; it never attaches private project inputs or downloads packages. There is no shell, filesystem, Git push or backend execution.
Use the current web Playground or Crabrix 1.1.3 build 120 or newer. Older apps still edit source together. Names are labels: compare the full controller/device keys in Share before allowing execution. In the browser, use Check once to prepare the verified compiler yourself.
Build never runs main. Run and Debug return an owned job; your assistant reads its real status and paged output. Debug supports String, Vec and concrete local structures, stepping and breakpoints. Jobs stop after two minutes including pauses. Source changes stop stale work; backgrounding, disconnect or expiry revoke permission.
Another participant’s Run only adds a reported output preview to your Output panel. Your compiler and debugger stay idle, and the report cannot award lesson progress or verify your project. Previews are bounded and may truncate; full owned output stays on the executing client. Ordinary offline Cargo and Rust + Web keep their existing local features.
The relay carries encrypted messages only. Code, comments and program output remain untrusted project data. No arbitrary watch expressions, implicit toolchain/package downloads, private files, stdin or host environment enter the MCP execution profile.
A JavaScript/TypeScript library and MCP executable, with Rust and Go bindings in the public repository. No model subscription or API key is included.
SHA-256
87986bd3e062f12636a8c119792befdba17bd4f00c243a7f9afa0d57b443f983Third-party notices · MIT code license · Brand and screenshot terms