Wrench

Open-source CLI and TypeScript SDK

Give your coding agent bounded access to the web

Wrench is a local CLI and TypeScript SDK that lets an agent read public pages, archive media, and take supported actions in the services you’ve signed into. You keep the model, the keys, and the browser.

Ask your agent to read this page as Markdown, archive one YouTube video with its transcript, and list your recent Beeper conversations.

Free and MIT licensed. Runs on macOS and Linux with Bun 1.3.14. Release v0.16.11.

$ wrench read https://example.com
Capturing https://example.com/ (auto, auto) ...
---
title: "Example Domain"
source: "https://example.com/"
clipped: "2026-09-05"
platform: "generic"
capture_status: "complete"
capture_method: "http"
capture_scope: "page"
---
# Example Domain

This domain is for use in documentation examples without needing permission. Avoid use in operations.

[Learn more](https://iana.org/domains/example)
The complete output of one wrench read for a public page: a short record of what was captured and how, then the page as Markdown. Nothing was saved. Wrench v0.16.11, run on September 5, 2026
Read
Turn a public URL into Markdown your agent can inspect on the spot or keep in a local knowledge base.
Archive
Preserve one media item you’re allowed to access, with its source bytes, transcript, manifest, and SHA-256 records.
Act
Use named actions in 20 services you’ve signed into, from Beeper and Gmail to YouTube. If an action isn’t listed, Wrench doesn’t offer it.

Local release v0.16.11

Install the verified local release.

Wrench requires Bun 1.3.14 and runs on macOS and Linux. Install the CLI and SDK from the @hraness/wrench package on npm, then run the doctor before you connect a service.

Add the Agent Skill

npx skills add hraness/wrench#v0.16.11

Add Wrench’s capture, archive, provider, and publishing guide to your agent. With Bun, run bunx skills add hraness/wrench#v0.16.11 instead. View the Wrench Agent Skill on skills.sh.

terminalv0.16.11
bun add --global @hraness/wrench@0.16.11
wrench doctor
wrench read https://example.com/article
wrench capabilities --json

Your agent asks for an outcome, not a browser.

Every request resolves to one named action with typed inputs and a typed result. The service session, cookies, and provider plumbing stay inside a local kernel the agent never touches.

  1. Name the job

    The agent asks for an outcome, such as reading an inbox or preserving one video.

  2. Match one action

    Wrench resolves one installed, supported action. There is no general browser or request tool to fall back on.

  3. Check the account

    The kernel binds the exact service, account, transport, contract version, and risk level before anything runs.

  4. Run one exchange

    Credentials stay opaque to the caller and can reach only the endpoints that action declares.

  5. Return the result

    The caller gets a typed result, an explicit note of what is incomplete, or a durable record that the outcome is still unsettled.

Reviewed operations across 20 supported services.

These cards summarize capability families and access methods, then link to the named actions supported in this release. If an action is not listed there, Wrench does not offer it.

8 supported actions

Comments · Content · Feeds · Media · Posts · Profiles

Signed-in web session

1 supported action

Feeds

Signed-in web session

2 supported actions

Organizations · Profiles

Signed-in web session

3 supported actions

Contacts · Messages

Official API

3 supported actions

Comments · Feeds · Posts

Signed-in web session

8 supported actions

Comments · Contacts · Content · Feeds · Media · Messages · Posts · Profiles

Signed-in web session

5 supported actions

Conversations · Messages

Local app

12 supported actions

Articles · Comments · Contacts · Feeds · Organizations · Posts · Profiles · Reactions · Replies

Official API + Signed-in web session

11 supported actions

Comments · Content · Feeds · Flair · Media · Messages · Posts · Profiles

Signed-in web session

10 supported actions

Articles · Comments · Content · Feeds · Media · Messages · Organizations · Posts · Profiles

Signed-in web session

4 supported actions

Feeds · Media · Posts · Profiles

Signed-in web session

3 supported actions

Comments · Feeds · Profiles

Signed-in web session

1 supported action

Profiles

Signed-in web session

4 supported actions

Contacts · Media · Messages

Linked device

16 supported actions

Articles · Comments · Content · Feeds · Likes · Messages · Posts · Profiles · Replies · Threads

Official API + Signed-in web session

5 supported actions

Comments · Feeds · Media · Posts · Profiles

Signed-in web session

Provider names identify compatible services and do not imply endorsement. Counts are for release v0.16.11.

Interfaces

The same boundary from three surfaces.

Wrench does not publish a hosted API or MCP server. Its public interfaces stay local and versioned, so what your agent can do is the same from a skill, a terminal, or typed code.

Agent Skill

Add the release-matched capture, archive, provider, and publishing guide to an agent that can run commands.

npx skills add hraness/wrench#v0.16.11

CLI

Use stable human output or JSON from a terminal, a script, or an agent tool call.

wrench capabilities --json

TypeScript SDK

Import side-effect-free validators and types without starting the CLI or inspecting local state.

import { isProviderPluginId } from "@hraness/wrench"

Local by design

Nothing leaves your machine unless you ask it to.

Wrench is infrastructure around the accounts and tools you already have, not a service in front of them.

Your sign-ins stay here
Connected accounts live in encrypted local state. Your agent receives a named action and its result, never cookies, tokens, or a browser it can steer.
Only the traffic you asked for
Wrench contacts the page or service the action names and nothing else. The CLI and SDK send no analytics anywhere.
Reads you can open later
Account-bound reads are kept as encrypted snapshots on your machine. A failed refresh or a changed service does not erase the last verified state.
Writes happen once or stay flagged
Consequential changes need a short preview and a confirmation. An indeterminate write is never blindly retried and remains unsettled until separate exact evidence can reconcile it.
Change fails closed
When a service changes its shape, the affected action becomes unavailable until its contract is reviewed again. Wrench never switches silently to a browser fallback.
Bring your own agent
Wrench ships no model, planner, approval screen, or app. It works with the coding agent you already use and stays out of its way.

Use Wrench with the tools you already have.

Wrench owns a narrow local layer: named actions and the records they leave behind. Hosted integration catalogs, cloud Actors, and managed browsers solve broader jobs at other layers.

ApproachBest fitWrench boundary
Pipedream ConnectHosted integration breadth and managed end-user authentication across thousands of APIs and prebuilt toolsA smaller local set whose provider operations and implementations are reviewed before they run
Apify MCPDiscovering and running eligible Apify Store Actors through a hosted MCP service, with access to results and storageEach provider operation and implementation must be named and reviewed before it can run
BrowserbaseParallel browser automation on managed cloud sessions, with live inspection and video recording by defaultNo remote browser runtime and no hidden browser fallback when a named operation is missing or drifted
WrenchNarrow local capabilities whose exact identities, account realms, and risks need reviewEncrypted provider snapshots and projections, mutation previews and receipts, and fail-closed contract drift

Questions

Before you install.

Does Wrench need an account?

No. Install the CLI and read a public page. You connect a service only when you want its actions, and each connection is stored on your machine. There is no Wrench account and no Wrench server in the loop.

Does it use my credentials?

It uses a sign-in you already have for a service, on this machine, and keeps it out of your agent’s hands. The agent calls a named action and gets a typed result. It never receives cookies, tokens, a shell, or a browser it can steer.

What does it cost?

Nothing. Wrench is free and MIT licensed, with no hosted tier and no paid plan. You pay your model provider and any service subscriptions you already have.

Does it phone home?

No. The CLI and SDK send no analytics to wrench.rip; they make only the network requests the action you chose requires. This website counts page views with cookieless analytics and honors Do Not Track. The privacy page explains both.

Which platforms does it run on?

macOS and Linux with Bun 1.3.14. Actions that read iMessage or Apple Photos need macOS. Beeper actions need Beeper Desktop on the same machine, and WhatsApp reads need a linked device.

Is Wrench an AI agent?

No. Wrench is a CLI and an SDK. Your agent owns the model, the plan, approvals, and the interface. Wrench gives it a set of actions it can call and a record of what happened.

Does it bypass login, paywalls, access controls, or DRM?

No. Media archiving is limited to one item you are authorized to access that is finite and not protected by DRM. Wrench does not bypass payment, authentication, access controls, or DRM.

What happens when a service changes?

The affected action becomes unavailable until its contract is updated, reviewed, and tested. Wrench does not switch to a browser fallback silently, so a changed page never turns into a guessed action.

Why does Wrench refuse to retry some writes?

If a request left the machine and its response was lost, the effect may already exist. Wrench keeps that uncertainty visible and reconciles it from separately obtained evidence instead of sending the request again.

What does release v0.16.11 include?

Page capture, media archives, encrypted reads, and 139 supported actions across 20 services. wrench capabilities is the source of truth for what is installed and available on your machine, and the provider list names every action in this release.

Who made it?

Ben Guo, a musician and builder who was a founder and engineering leader at companies including Venmo and Stripe, and who now builds from Puerto Rico. Wrench is published in the open under the Hraness GitHub organization.

Built by

Ben Guo

Wrench is built by Ben Guo, a musician and builder, formerly a founder and engineering leader at companies including Venmo and Stripe, now building from Puerto Rico. He publishes it in the open with the rest of his projects at hraness.com.

Precise web capabilities for the agent you already use.

Install the CLI, read one public page, and connect a service only when you need its actions.

Free and MIT licensed. Runs on macOS and Linux with Bun 1.3.14. Release v0.16.11.

Where the boundary changes

Arguments and comparisons

These essays compare named, attested operations with browser control, account identity, virtual machines, device policy, rumour-driven agentic search, and desktop privilege grants.

Documentation by task

Start with the outcome you need.

These guides describe the current release, the commands to use, and the limits that stay in force.

Check provider support

See every provider action available in the current release and the access method it uses.

Author a provider plugin

Define one operation, prove its contract, then check, test, pack, trust, and install the exact code.