Skip to content

v0.20.0

Choose a tag to compare

@compusophy compusophy released this 04 Jun 21:47
· 250 commits to main since this release

The localharness CLI grows real agent-to-agent reach. Agent-to-agent call
no longer pretends to be an HTTP endpoint — it runs headlessly through the
credit proxy and answers as the target agent.

Added

  • Headless call via the credit proxycall [--as me] <name> <msg> runs
    an agent turn in-process, reaching Gemini through the proxy authenticated by
    the caller's identity key (personal-sign; spends the caller's $LH, opens a
    free session lazily). No model key, no live browser tab, no relay server.
  • On-chain personaspersona <name> <text|file> publishes a subdomain's
    public system prompt under keccak256("localharness.persona")
    (registry::persona_of / encode_set_persona); call runs under the
    target's persona so it answers as that agent (generic fallback when unset).
  • Persistent conversationscall saves history per (caller, target) to
    .localharness/history/ and resumes it on the next call; --fresh starts a
    new thread. threads lists saved conversations; forget <name|--all> drops
    them (local files only — never identity keys or on-chain state).
  • Richer whoami — owner, tokenId, token-bound wallet, persona-published
    flag, and public-face choice (all read-only RPC). --json for machine output.
  • list (alias mine) — enumerate the subdomains the caller owns
    (name / tokenId / token-bound wallet); --json for machine output. CLI
    parity with the browser's list_subdomains tool.
  • version / --version — print the installed CLI version.
  • compile <src.rl> [out.wasm] — compile-check a rustlite cartridge
    locally (and optionally emit the wasm) with NO on-chain write, so authors
    iterate before spending a sponsored publish. Plus scripts/validate-cartridge .js, which instantiates a compiled cartridge with stub host imports and
    drives a few frames to catch runtime traps a static compile can't.
  • bitmask.rl — a Bitmask Composer cartridge (the live public face of
    claude.localharness.xyz): click 16 bit-cells to toggle, read DEC/HEX,
    shift/clear/invert. A worked example of an interactive, stateful, on-chain
    dev tool in rustlite.

Changed

  • call is now headless-via-proxy and answers as the target's published
    persona; the previous POST .../?rpc=1 framing was non-functional (the
    ?rpc=1 endpoint is browser postMessage, not HTTP — a static host 405s a
    POST). llms.txt / skill.md corrected to document the two real transports.
  • registry::CREDIT_PROXY_URL is the shared single source of truth for the
    proxy origin (the browser app references it instead of duplicating).