Wrench

Beeper adapter · v0.16.1

Use Beeper through 32 supported actions.

Wrench exposes 32 semantic operations over the official Beeper CLI 0.6.2 and an already-authorized Beeper Desktop target. Each request binds one executable, account realm, Desktop target, operation contract, input, output, and risk level.

This page describes adapter beeper-local 2.0.0 in v0.16.1. Run wrench capabilities beeper-local --json for the exact state installed on your machine.

Read, manage, and send through named contracts

Read

List and read accounts and bridges; list, search, and read contacts and conversations; read message pages, exact messages, and surrounding context; and search bounded message-content windows.

Manage state

Set reactions, archive or pin conversations, change mute or priority state, set or clear private drafts and reminders, and focus one exact Desktop conversation.

Send and change

Send text, files, stickers, or voice; edit an authored message; start a conversation; change read state or group metadata; set disappearing-message retention; send Notify Anyway; and emit bounded presence.

Inspect the operation-level contracts, risks, and limits.

Bind one official CLI and one Desktop target

Install the official CLI, authorize it to the local Desktop app, install Wrench's reviewed adapter manifests, then bind an auth identity to the exact Beeper account and Desktop realm.

brew install beeper/tap/cli
beeper setup
wrench adapter sync-bundled --json
wrench auth add beeper-main --linked-device beeper \
  --device-store "${HOME}/.beeper"
wrench auth bind beeper-main --site beeper

If a package manager installs different bytes, extract the matching release asset for your platform and place the executable at <WRENCH_STATE_HOME>/tools/beeper/0.6.2/beeper. When WRENCH_STATE_HOME is unset, the default state root is ~/.local/share/wrench. The artifact table below links the direct official asset for every supported macOS and Linux architecture. Wrench rejects an unpinned executable before private work. A Beeper Desktop update changes the bound runtime realm and requires explicit review and rebind.

What Wrench adds to the official Beeper CLI

Beeper publishes the upstream CLI. Wrench exposes reviewed outcomes from that CLI instead of exposing a command name and arbitrary arguments. The caller cannot select a command, flag, endpoint, target, environment variable, output path, or user-installed CLI plugin.

Wrench starts the executable directly without a shell, removes ambient credentials and target defaults, isolates oclif user-plugin state, and stages files only from digest-bound plan assets. Private text accepted by the upstream CLI as an argument can remain visible to same-account local process inspection while the child runs.

Each supported platform is bound to exact archive and executable SHA-256 values. A reported version, package-manager formula, release tag, or compatible-looking update is not execution authority.

Keep each version boundary separate

BoundaryCurrent identityWhat it controls
Wrench releasev0.16.1The installable CLI, SDK, plugin catalog, and public support directory
Adapterbeeper-local 2.0.0The public operation catalog and selected source-plugin contracts
Semantic contractsContract version 1 across the current 32 operationsEach operation's input, output, risk, side effect, and completeness
Official CLIBeeper CLI 0.6.2 at a416af06023449a87312dc11e54643fd9dc94b8cThe exact upstream client, further bound by one executable digest per platform
Reviewed SDK semantics@beeper/desktop-api 5.0.0 at b9c1714410139c2139b597338cd002d785653e85The response semantics reviewed behind the CLI, not a claim about the running Desktop version
Runtime Desktop realmBound bundle ID, advertised version, loopback target, and hashed self accountThe exact local Desktop instance authorized to execute

These identities answer different questions and do not form a compatibility range. A new CLI artifact or Desktop build requires separate review.

Pinned executable artifacts

The reviewed CLI release commit is a416af06023449a87312dc11e54643fd9dc94b8c. Its release-manifest SHA-256 is 5c52b533180151b97e26138ef687b6b819170687b34a478184e5648335356950. Review the official 0.6.2 release and the CLI manual.

RuntimeDownloadArchive SHA-256Executable SHA-256
macOS arm64Official release asset688ccde7e7d044d33980cd06474bf1ae7215ccf8ca79967262fa3bfb85a2589a48aa895449129c793a212ea19f69a534adc34a8adc4037ca1d7da9e648716425
macOS x64Official release asset4113a1979cfbd7839f14743158e70c12efa941313afb77ab2b11a0830919618683bb89edb6eeb9c61ebdb6ec940e0db30c90ecbca61d60a7408fe336e255f22e
Linux arm64Official release asset2bd37043a4ed863621edc59e28aaa652e8193e55abca0e9477f5aeae1c65d629102b8725bd99b03905dcff9fff645f3742e1697ce8d43ab9d8656896aafd12a8
Linux x64Official release asseta881e1d2bc91e31218b251716644ec5f8d161d5ccb30e7eab66cf2ba6410511d723cc3a6c556fa21b6ba11db8377d6a29776aca1660da48f0072883d6452ae3d

Preview one message send

wrench beeper-local messaging.send --auth beeper-main --preview --json \
  --input '{"account_id":"<account-id>","conversation_id":"<chat-id>","kind":"text","text":"Hello from Wrench"}'
wrench confirm <preview-digest> --json

messaging.send previews the exact request, requires confirmation, durably records dispatch, and invokes Beeper without --wait. An accepted pending target is evidence of submission, not network delivery.

After the child may have reached Desktop, a timeout, signal, malformed response, or lost response remains indeterminate. Wrench does not retry it. A separately obtained exact read must reconcile the outcome.

Export local history for another bounded tool

Separate Wrench workflows can produce a private Message Like Me bundle or a body-free contact-interaction summary from Beeper's locally materialized history. These workflows are not part of the 32 supported actions.

wrench beeper export-message-like-me --auth beeper-main \
  --output /absolute/path/to/new-message-like-me-bundle --json

umask 077
wrench beeper export-contact-interactions --auth beeper-main --json \
  > /absolute/private/path/beeper-contact-interactions.json

Both exports retain incomplete-coverage evidence. The contact view excludes message bodies, attachments, reactions, media, group messages, names, titles, handles, credentials, and local paths. Provider coordinates can identify a person, so body-free does not mean anonymous.

Limits remain visible

Beeper CLI 0.6.2 exposes no continuation for several list and search commands and may cap results below the requested limit. Wrench returns bounded candidate windows instead of claiming complete history.

The checked coverage ledger accounts for all 101 canonical CLI commands. Account setup and removal, authentication and verification, target and server administration, software and plugin lifecycle, raw API or RPC, watches and webhooks, arbitrary exports, media download, and message deletion remain unavailable or R4.