# mubit-sdk (Rust)
Public unified Rust SDK for Mubit.
## Usage
```rust
use mubit_sdk::{Client, ClientConfig};
use serde_json::json;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = env::var("MUBIT_API_KEY")?;
let client = Client::new(
ClientConfig::default()
.run_id("demo_run")
.api_key(api_key)
)?;
let accepted = client.control.ingest(json!({
"run_id": "demo_run",
"agent_id": "sdk-quickstart",
"idempotency_key": "quickstart-1",
"parallel": false,
"items": [{
"item_id": "item-1",
"content_type": "text",
"text": "hello mubit",
"payload_json": "",
"hints_json": "",
"metadata_json": "{\"source\":\"quickstart\"}",
}],
})).await?;
let mut job = client.control.get_ingest_job(json!({
"run_id": "demo_run",
"job_id": accepted["job_id"],
})).await?;
while !job.get("done").and_then(|v| v.as_bool()).unwrap_or(false) {
tokio::time::sleep(std::time::Duration::from_millis(200)).await;
job = client.control.get_ingest_job(json!({
"run_id": "demo_run",
"job_id": accepted["job_id"],
})).await?;
}
let _answer = client.control.query(json!({
"run_id": "demo_run",
"query": "what did we ingest?",
"mode": "agent_routed",
"direct_lane": "semantic_search",
"include_linked_runs": false,
"limit": 5,
})).await?;
Ok(())
}
```
`transport` defaults to `auto` (gRPC primary, HTTP fallback).
Endpoint resolution order:
1. explicit `endpoint` / `http_endpoint` / `grpc_endpoint` on `ClientConfig`
2. env vars `MUBIT_ENDPOINT`, `MUBIT_HTTP_ENDPOINT`, `MUBIT_GRPC_ENDPOINT`
3. shared defaults `https://api.mubit.ai` and `grpc.api.mubit.ai:443`
## Control-Plane Examples
From repository root:
```bash
set -a && [ -f .env ] && source .env && set +a
cargo run --manifest-path sdk/rust/mubit-sdk/Cargo.toml --example control_ingest_job_lifecycle
cargo run --manifest-path sdk/rust/mubit-sdk/Cargo.toml --example control_ingest_idempotency
cargo run --manifest-path sdk/rust/mubit-sdk/Cargo.toml --example control_batch_insert_semantic_direct
cargo run --manifest-path sdk/rust/mubit-sdk/Cargo.toml --example control_query_agent_routed
cargo run --manifest-path sdk/rust/mubit-sdk/Cargo.toml --example control_query_direct_bypass_matrix
cargo run --manifest-path sdk/rust/mubit-sdk/Cargo.toml --example core_direct_search_optional
cargo run --manifest-path sdk/rust/mubit-sdk/Cargo.toml --example control_state_structured_variables
```