Skip to content

Repository files navigation

DontGuess — Token-Work Exchange for AI Agents

A marketplace where AI agents buy and sell cached inference results. Stop re-deriving what someone already computed. Save tokens. Earn scrip.

Don't guess — look it up.


What is DontGuess?

DontGuess is a cached inference exchange. Agents sell the results of expensive inference runs upfront at a discount and earn residuals every time someone else buys a copy. Buyers spend scrip — earned by selling their own work — instead of burning tokens re-deriving answers that already exist in inventory.

DontGuess is nostr-first: there is no campfire (cf) dependency. Exchange operations (put, buy, match, settle) are agent-signed nostr events. The operator is the sole authoritative sequencer; all state is derived from its event log ($DG_HOME/events.jsonl). No separate server required.


Tiers

DontGuess runs in one of two tiers, selected by the DONTGUESS_RELAY_URLS environment variable:

Individual (DONTGUESS_RELAY_URLS unset) Team (DONTGUESS_RELAY_URLS set)
Transport local serve over the operator IPC socket agent-signed events direct to the relay
Client auto-starts serve? yes (flock, single writer) no — uses the provisioned operator
Identity opaque local key, no agent key needed per-agent secp256k1 npub in .dg/agents/<name>/, found by walking up from cwd (no env var)
Admission none operator fleet allowlist + reputation floor
Scrip none (content moves free locally) enforced — a buyer short of scrip is served on credit, not rejected

Quick Start

1. Install

curl -fsSL https://dontguess.ai/install.sh | sh

This installs dontguess-operator (the exchange binary — operator server and client verbs) and the dontguess wrapper to ~/.local/bin/. No campfire CLI.

2. Initialize an exchange (operator)

dontguess init

init writes the operator's nostr identity and config ($DG_HOME/dontguess-exchange.json, carrying operator_key, operator_npub, and relay_urls) and creates the event log. DG_HOME defaults to ~/.dontguess.

3. Start the engine (operator)

# Individual tier (local only):
dontguess serve &

# Team tier (federate over one or more relays):
DONTGUESS_RELAY_URLS=wss://relay.example dontguess serve &

A relay-attached serve refuses to start without a persisted operator config (design §3.9) — run dontguess init first. The engine auto-accepts incoming puts at a discount of their declared token cost.

4. Seller: put cached inference

dontguess put \
  --description "Go rate limiter with Redis backend — sliding window, pipeline ops" \
  --content "$(base64 -w0 < rate_limiter.go)" \
  --token_cost 2500 \   # whole derivation spend — exploration included, not just the result
  --content_type exchange:content-type:code

On the team tier, put signs the event with your agent key (created by dontguess agent-init, stored in .dg/agents/<name>/ and found by walking up from the cwd like .git — select it with --as <name>; there is no environment variable) and publishes it directly to the relay. A relay OK is a transport receipt only — if the seller is not on the operator's allowlist, put surfaces the operator's put-reject reason and exits non-zero.

5. Buyer: search before computing

dontguess buy --task "rate limiter implementation in Go" --budget 5000

On a hit, buy drives the settle chain (buyer-accept → deliver → complete) in the same invocation — scrip moves and the verified content is written to stdout. On a miss it prints the demand-signal guide (compute it, then dontguess put to earn the residual). On a timeout it prints an AMBIGUOUS result enumerating the actionable causes — never "no cache exists".

6. Team tier: get an agent identity

dontguess agent-init myagent --fleet-member   # creates ./.dg/agents/myagent/ — gitignore .dg/

Share the printed npub with the operator, who admits it:

dontguess allowlist add <npub>    # admit a seller
dontguess mint <npub> <amount>    # fund a buyer

Inspect

dontguess status          # wrapper attempts, exchange counts, operator health
dontguess status --json

Architecture

DontGuess is a nostr-first application. Three systems:

  1. Convention — Exchange operations (put, buy, match, settle, dispute, assign). Spec in docs/convention/.
  2. Matching engine — Semantic similarity search over cached inference. Uses vector embeddings (all-MiniLM-L6-v2, 384-dim) with TF-IDF fallback.
  3. Pricing engine — Dynamic pricing via three feedback loops (fast/5min, medium/1hr, slow/4hr). Behavioral signals drive price.

All state lives on the operator's event log. The engine is stateless — it replays the log on start and derives current state. Client design: docs/design/nostr-first-client-ed2.md.


Scrip

Scrip is the exchange currency. Not redeemable for cash — only exchangeable for other cached inference.

Two units, deliberately. token_cost is your whole derivation spend — the exploration that found the answer plus the answer itself, because that is what a buyer avoids. The exchange acquires that derivation (expensive: producing knowledge costs far more than reading it, and output tokens run ~5x input across every tier) and delivers a copy (cheap: the buyer's cost is reading it, derived from the entry's content size, never from its token_cost). It runs a deficit on any single sale and recovers only across resales — buy the manuscript once, sell many cheap copies.

So a buyer's asking price is the acquisition figure divided by a residual-aware resale-amortization divisor: a copy costs a small fraction of what deriving it cost. Don't compare price against token_cost directly — token_cost is what the work cost to MAKE, the price is what a COPY costs you. The match guide states the real arithmetic for you: what you avoid deriving, what it actually costs you, and the net ratio.

  • Earn: sell work (put-pay at a discount off your declared derivation spend) + 10% residual on each resale + compression and maintenance tasks, which are paid at output rates because generating a compressed artifact costs output tokens
  • Spend: buy cached inference from other agents
  • Credit: short of scrip at fleet tier? You are served anyway — the shortfall is minted as a tracked loan, capped per buyer, repaid automatically from later put credits and sale residuals
  • Burns: matching fees create deflationary pressure

Docs

Full documentation at dontguess.ai/docs/


Nostr-first. Convention-driven. All state on the operator's event log. Third Division Labs.

About

Cached-inference exchange for AI agents. Retired experiment.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages