Hither docs

How Hither works

For people and agents who want the model behind the setup steps, and the limits.

Hither lets an AI agent use a person's computer. The person approves the agent on that computer and chooses what it can use.

Five words

WordMeaning
ComputerThe person's machine.
HelperThe app installed on the computer. It runs as that OS user and connects out to Hither, so the computer opens no port.
AgentThe AI asking to use the computer: Claude, Codex, Pi or a script.
ConnectionOne agent joined to one computer, approved by a person on that computer. Permissions and folder rules belong to it, so one agent can have different access on two computers.
PermissionFiles, Terminal, Browser or MCP servers. Each is a switch with finer controls.

An agent can hold connections to several computers, and a person can have several computers and agents. Connections come in two kinds:

TemporaryLasting
Who gets oneAny agentAn agent signed in to an account
EndsWithin 24 hours of the requestWhen someone revokes it
TerminalSandboxed only, none on WindowsSandboxed, or full access if the person says yes on the computer
MCP serversNeverOff until the person turns them on

An account agent's connections are lasting unless it asks for a temporary one. An agent without an account only ever gets temporary connections. To keep one, the agent's owner first moves the agent into an account (a claim), and then the computer's owner allows it on that computer (an extension). Only the person at the computer can make a connection last.

Agents with and without an account

Anonymous agentAccount agent
How it startsMCP sign-in with Continue without an account, or POST /api/agents over RESTMCP sign-in with an account
ConnectionsTemporary only. 5 live at once, 20 new per day.Temporary or lasting
Moves to an accountAn MCP agent, with a claim link. A REST agent can't.Already in one
DeletedMCP: after 7 days with no live connection. REST: when its 24-hour token expires.When the person removes it

The service issues every credential. An agent never makes its own secret, and it uses the same credential before and after the person approves.

Life of a connection

  1. Pending. The agent asks for a computer with connect_computer or POST /api/connect/request and gives the person the setup link.
  2. Active. The person opens the link on the computer, chooses permissions, runs the setup command and approves in the terminal. Setup installs the helper if needed. The service checks each call's credential and connection, then forwards it to the helper, which checks permissions again and runs the call as the computer's user.
  3. Ended. The person cancels, denies or revokes it, removes the computer, or it expires. New calls fail, though a command already started may finish.

A temporary connection that ended by expiring can still be made lasting for 12 hours afterwards. Every other ending is final.

While the helper is offline, calls return device_offline and nothing runs. The agent can queue work for when the computer returns. The agent's own built-in tools never touch the computer; they act where the agent runs. The service at https://hither.dev relays calls and can read them (what it sees).

Limits

This table is the one home for these numbers.

WhatLimit
Setup link and pairing code10 minutes
Temporary accessUp to 24 hours from the request. durationSeconds accepts 60 to 86,400.
Anonymous agent connections5 pending or active at once, 20 new per UTC day
Account agent connection requests10 per hour
Connection requests from all agents500 per hour
REST agents (POST /api/agents)10 per hour from one address, 500 per hour in total
REST agent token24 hours from creation. It can't be renewed.
OAuth access token1 hour, refreshed by the client
Anonymous MCP agentDeleted after 7 days with no live connection
Claim link10 minutes, single use. A new link replaces the old one.
Setup link emails (account agents only)3 per request, 10 per agent per hour, 5 per recipient per UTC day, 500 per hour in total
Making a connection lastingWhile it is active, or up to 12 hours after it expired
request_extensionRepeats while one is waiting count once. After the owner decides, 10 minutes before the next.
deadlineInMs30 seconds by default, 1 to 55 seconds
shell_exec timeoutMs1 to 55 seconds
Text read, write or edit1 MB
files_read page1,000 lines
files_list, files_searchDepth 20, 1,000 entries per page
files_search budget3 seconds, 16,000,000 bytes, 1 MB scanned per file
Small transfer chunk192 KB before base64
Large transfer10 GiB per file. The job lasts 1 hour, a download link 5 minutes.
Terminal sessions8 running per connection, 1 MB output buffer each
Session idle expiry, idleMinutes120 minutes by default, 1 to 1,440
shell_readmaxBytes 64 KiB by default, up to 512 KiB. waitMs up to 20 seconds.
Finished sessionsReadable for 5 minutes. The helper keeps the last 32.
Queued job deadline30 minutes by default, 12 hours at most, never past the connection's end
Queued job arguments, result1.5 MB each. Results stay 1 hour past the deadline.
Active queued jobs32 per computer, 1,000 in total
Queued job storage64 MiB per computer, 256 MiB in total
/api/jobs/wait55 seconds per call
Helper result journal24 hours, 1,024 requests or 16 MB, whichever comes first. 64 KB per reply.
operationsThe last 100 records
Browser import50,000 history entries, 50,000 bookmarks