Start
JoyMux five-minute quick start
Goal: install JoyMux, start the daemon, run a command, view events, interrupt, and close — in about five minutes.
1. Install
Customer path (macOS Apple Silicon and Intel): download from /releases/ or run the installer. See install.
curl -fsSL https://joymux.com/releases/install.sh -o joymux-install.sh
less joymux-install.sh
sh joymux-install.sh
# save ~/.joymux/entitlement_lease.json from the trial success page
joymux init
joymux doctor --json
joymux license status
Do not cargo install unless you already have the private source checkout.
Language SDK (optional, from source)
The CLI above is enough to run sessions. SDKs are for people wiring a harness. Packages are not on npm/PyPI yet.
Rust
# Cargo.toml — path or git dependency until crates.io is published
joymux-sdk = { git = "https://github.com/joyortoy/joymux.git" }
cargo add joymux-sdk # when published
Python
python3 -m pip install ./sdk/python
# published name (when released): pip install joymux
# or: PYTHONPATH=sdk/python python3 …
TypeScript
cd sdk/typescript && npm install
# published name (when released): npm install joymux
2. Start the daemon
joymux daemon start
joymux doctor --json # shows socket + readiness
You normally do not need to type the socket path. SDKs discover via:
JOYMUX_SOCKET/JOYMUX_UNIX_SOCKET/JOYMUX_ENDPOINTjoymux doctor --jsonjoymux endpoint --json~/.joymux/integration.json
3. First execution
Rust
use joymux_sdk::JoyMux;
#[tokio::main]
async fn main() -> joymux_sdk::Result<()> {
let mux = JoyMux::connect().await?;
let mut session = mux.create_session().await?;
let handle = session.exec("echo hello").await?;
println!("{}", handle.execution_id);
Ok(())
}
Python
from joymux import JoyMux
mux = JoyMux.connect()
session = mux.create_session()
session.exec("echo hello")
TypeScript
import { JoyMux } from "joymux";
const mux = await JoyMux.connect();
const session = await mux.createSession();
await session.exec("echo hello");
CLI
joymux exec -- echo hello
4. View events
events = session.events()
for e in events:
print(e["kind"], e.get("payload"))
# after creating a session via CLI / SDK, use session id:
joymux session events <session_id>
5. Interrupt
handle = session.exec("sleep 60")
session.interrupt(handle.execution_id)
joymux execution interrupt <execution_id>
6. Close the session
session.close()
joymux session close <session_id>
7. Metrics & health
print(mux.health())
print(mux.metrics())
joymux health
joymux metrics
Next steps
- SDK reference:
docs/sdk.md - Guarantees:
docs/architecture.md - Transports:
docs/unix-jsonrpc.md,docs/mcp-integration.md - Recovery:
docs/checkpoints-and-resume.md - Benchmarks / telemetry:
docs/benchmarking.md
Troubleshooting: run joymux doctor and see docs/troubleshooting.md.