Quo is a cross-platform variable dumper designed to make debugging easier. It receives data from your application and displays it in a clean desktop interface, allowing you to inspect complex values in real-time without cluttering your terminal or browser console.
- Real-time Inspection: See variables as they are dumped from your code.
- Cross-platform: Supports Windows, macOS (x86 + ARM), and Linux.
- Multi-language Support: Official companion packages for Rust (Native and WASM), PHP (^7.1), and JavaScript/TypeScript (Node and Browser).
- Diff payloads: Ability to diff two different payloads and see their differences (useful for large JSON payloads).
Integrating Quo into your workflow is a simple two-step process.
- Install the Desktop App: Download the latest version here or via the release page on GitHub for your operating system.
- Add a Companion Package: Choose the package for your language below and follow the installation instructions.
Rust quo-rust
Use the quo-rust crate to send variables with simple macro calls.
Add quo to your Cargo.toml under dependencies:
[dependencies]
quo = { version = "0.1", package = "quo-rust" }To enable additional data capture, use feature flags:
[dependencies]
# Enable specific features
quo = { version = "0.1", package = "quo-rust", features = ["stack-trace", "system-info", "hashing"] }
# Or enable everything
quo = { version = "0.1", package = "quo-rust", features = ["full"] }stack-trace: Captures the call stack and the caller function name.system-info: Captures current CPU and memory usage of the process.hashing: Generates a reproducible grouping hash for variables (var_type:name:origin), allowing the Quo client to group and diff values over time.full: Enables all the above features.
Basic info like Thread ID/Name, Runtime Environment (OS/Arch), and Memory Address are included by default.
Using quo!() macro:
use quo::quo;
#[derive(Debug)]
struct User {
id: u32,
username: String,
}
fn main() {
let user_id = 42;
let user = User { id: 1, username: "jdoe".to_string() };
quo!(user_id, user);
}PHP quo-php
The PHP companion package allows you to dump values from any PHP application.
Install the package via Composer:
composer require --dev protoqol/quo-phpUse the global quo() helper function:
<?php
require_once 'vendor/autoload.php';
$userId = 42;
$username = 'dev_user';
quo($userId, $username);JavaScript / TypeScript quo-ts
Use the JavaScript package in Node.js or browser projects to dump runtime values.
Install the package via npm or yarn:
npm install -D @protoqol/quo-tsImport the quo function and pass your data:
import {quo} from "@protoqol/quo-ts";
const userId = 42;
const username = "dev_user";
quo(userId, username);
// Or if quo not importable and not on Node
window.quo(userId, username);Quo is open-source software licensed under the GPL-3 license.