HandToHuman Documentation Product overview
07

Validation limits

Requests are rejected before any API call when they exceed these limits.

FieldAllowed range
Source text1–100,000 characters
Turnaround5–10,080 minutes
Price300–100,000,000 cents
Idempotency key8–128 bytes, no control characters
Screening percentage1–25
Screening maximum words50–500
Humanization id (get)ASCII alphanumerics, _, -
Imported work brief1–100,000 bytes, valid non-empty JSON object; title 1–200 characters
Task title1–200 characters
Task brief1–5,000 characters
08

CLI

Per-command reference. Browse the complete CLI command tree for exact invocations, inputs, effects, and refusal conditions.

First-use and reusable import
handtohuman onboarding [--reset]
handtohuman gui --listen <LOOPBACK-HOST:PORT>
handtohuman market draft-import <FILE> --kind <KIND> --title <TITLE> [--id <ID>]
handtohuman market draft-show <DRAFT_ID>
handtohuman market draft-remove <DRAFT_ID>
handtohuman market order-create <BUYER_ID> <OFFER_ID> [--units N] --draft <DRAFT_ID>

gui serves the graphical importer from the installed binary, while draft-import is the CLI form. Both reach the fleet database handtohuman through Stado and Skarbiec and call the same importer. The GUI requires an explicit loopback --listen; there is no local database-file option. File parsing, size, title, id, duplicate, and conflict checks finish before insertion. Existing drafts are preserved; removal refuses a draft attached to an order.

Command surface
handtohuman quote --kind humanization --words 648 \
  --turnaround-minutes 1440 --currency USD
handtohuman market order-assign <ID> --turnaround-minutes N [--worker W]
handtohuman market order-lapsed
handtohuman market order-verify <ID> --document F [--recording F]

Use handtohuman market --help for the full leaf command tree. Marketplace and quote results are JSON by default; --json selects it explicitly and --text prints the same result as path-and-value lines. These flags conflict. The interactive gui and onboarding commands refuse output-format flags. quote --output <FILE> writes its result to a file instead of stdout. Invalid invocations exit 2; ledger resolve, credential, connection, migration and domain refusals exit nonzero with their cause.

09

Rust library

Rust, inside an async function
use handtohuman::{Marketplace, OfferKind, quote_card};

let quote = quote_card(OfferKind::Humanization, 648, 1440, "USD")?;
let market = Marketplace::open().await?;
let brief = std::fs::read("existing-brief.json")?;
let imported = market.import_work_brief(
    None,
    OfferKind::Humanization,
    "Existing rewrite brief",
    "existing-brief.json",
    &brief,
).await?;
let draft_id = imported.imported.first()
    .or_else(|| imported.unchanged.first())
    .map(|draft| draft.id.as_str())
    .ok_or("the brief was not retained")?;

The crate exposes marketplace, onboarding, GUI, payments, pricing, verification and Stado execution modules. Marketplace::open().await connects to the fleet database and migrates its schema. Draft import retains existing work but does not commission it; order creation, funding and assignment are separate operations.

10

Configuration

VariableMeaning
HANDTOHUMAN_FLEET_HOMEHome where Stado and the HandToHuman database-client bearer are installed; otherwise HOME.
HANDTOHUMAN_DATABASE_URL, HANDTOHUMAN_DATABASE_CA_FILEOptional direct server URL and trusted PEM CA on a machine without Stado. A server URL without the CA file is refused before connecting.

The default route resolves database handtohuman through Stado, obtains its credential fields from Skarbiec and verifies TLS before migrating the schema. A configured route is not proof of a working connection.

17

Building and helper scripts

Terminal
cargo build --release

The binary is target/release/handtohuman. HandToHuman requires Rust 1.85+ and edition 2024. TLS uses rustls and needs no system dependencies.

Release workers use stado product cargo with the immutable private-cargo-sources input instead of fetching private Git repositories. From the committed checkout, run stado release catalog input pin . --name private-cargo-sources --source . --revision HEAD --cargo --json, then commit the updated .wisent-release.json before submitting a release. Repeat when locked private packages change.

Stado's private Cargo input contract covers the matching desktop operation, checksums, missing or stale input refusals, and real publication qualification. Both publisher and worker must support it. Publication alone is not proof that the native build or installed application works.

Reassignment needs no separate script: handtohuman market order-lapsed lists orders past their deadline, and handtohuman market order-assign assigns a worker while preserving the escrow.

HandToHuman

One contract from work request to verified delivery.

Back to top ↑