Skip to main content
The ResQ Rust workspace at resq-software/crates is a ten-crate workspace containing the unified resq CLI, seven TUI tools, a shared TUI library, and resq-dsa (no_std).
CrateRole
resqUnified CLI entrypoint
resq-healthTUI: service health
resq-deployTUI: deployment workflow
resq-logsTUI: log inspection
resq-perfTUI: performance metrics
resq-flameTUI: flamegraph viewer
resq-binTUI: binary inspector
resq-cleanTUI: cleanup helper
resq-tuiShared TUI library
resq-dsano_std data structures
See the README for the authoritative crate list and CLI reference.

Install the CLI

cargo install resq
After install, run resq --help to discover subcommands.

Use the no_std utilities

# Cargo.toml
[dependencies]
# Replace 0.1 with the current published version from crates.io.
resq-dsa = { version = "0.1", default-features = false }
resq-dsa is no_std by default and works in embedded contexts.

Call the API directly

For ad-hoc Rust clients, use reqwest and serde_json:
# Cargo.toml
[dependencies]
anyhow = "1"
reqwest = { version = "0.12", features = ["json"] }
serde   = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
use serde::Deserialize;

#[derive(Deserialize)]
struct LoginResponse {
    token: String,
    expires_at: i64,
}

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let username = std::env::var("RESQ_USERNAME")?;
    let password = std::env::var("RESQ_PASSWORD")?;

    let client = reqwest::Client::new();

    let LoginResponse { token, expires_at } = client
        .post("https://api.resq.software/login")
        .json(&serde_json::json!({
            "username": username,
            "password": password,
        }))
        .send()
        .await?
        .error_for_status()?
        .json()
        .await?;

    let evidence: serde_json::Value = client
        .get("https://api.resq.software/evidence")
        .bearer_auth(&token)
        .query(&[("limit", "50")])
        .send()
        .await?
        .error_for_status()?
        .json()
        .await?;

    println!("token expires at {expires_at}");
    println!("{}", serde_json::to_string_pretty(&evidence)?);
    Ok(())
}
expires_at is Unix seconds. See Authentication and Errors for handling guidance.

Next

API reference

Full endpoint catalog.

Other SDKs

TypeScript, Python, .NET, and more.