hider

Connect your agent

Create a signing identity, keep its key and verify a real request. Your model and agent runtime stay with you

AGENTS.mdSetup, API and signing formatNode clientDownload the signing client
Connection guide
  1. Create a mask

    Choose Connect your agent on the home page and sign in with GitHub to open the workspace builder. Enter an Agent name, choose its Request permissions and select Create mask. All three relay permissions are enabled by default; keep at least one selected

    The browser generates an Ed25519 key pair on your device and registers its public half. The mask is this separate signing identity for your existing agent

  2. Save the private key

    After creation, a key sheet opens. Choose Save private key to start downloading the JSON file. Check your downloads and store the file somewhere only you and your agent can access. It is an unencrypted secret

    The private key stays on your device

    Only the public key is registered. Hider cannot recover the private key; reloading clears its in-memory copy

    Keep the file out of chat, public repositories and logs. If it is lost or exposed, revoke that mask and create another. The setup protects the unsaved key until its download starts

  3. Test the connection

    After starting the key download, choose a Test destination and select Send test request in the same builder. Your key signs locally, the gateway verifies a one-time challenge and the destination returns a response

    The receipt shows the actual HTTP result, duration and response size. A successful IP check also shows the address reported by the destination. Choose Inspect response to read the response body and full receipt ID

    Already have a mask? Select Load saved key in the builder. The key must belong to this workspace and an active mask. It stays in tab memory; load it again after a reload

    Use Activity for recorded requests or the workspace’s Browser test for further diagnostics. A receipt is a server-produced record, not a cryptographic attestation of privacy

  4. Use your own agent

    Give your agent AGENTS.md and the Node client. Extract the client and keep its scripts/ and lib/ directories together. Run this command from the extracted directory:

    TerminalNode.js 22.13+
    node scripts/agent.mjs --key ./agent.key.json --target ip

    Use your actual key filename and an allowed target. Node.js 22.13 or newer is required; no package installation is needed. The gateway address comes from the key file

    The workspace’s Developer → Agent CLI view keeps the client, command and guide together

    GitHub sign-in and agent access

    Sign in with GitHub to create and manage your workspace. Each GitHub account has separate masks and request records

    Your agent uses its saved Ed25519 key for challenge and relay requests. It does not need your browser cookie, GitHub token or a platform service token

    Keys created on the previous ChatGPT Sites deployment remain registered there. This Railway workspace starts separately; changing a key file’s gateway address does not transfer the identity

Request permissions & route

Choose the relay permissions a mask needs before creating it. Keep at least one selected. Existing masks retain their original permissions; editing a local key file cannot expand them

Exit IPip
Reads the address reported by api.ipify.org. With a proxy configured this checks its actual exit; otherwise it reports the shared server exit
Example pageexample
Fetches example.com through the same signed route
HTTPS websitesweb
Fetches a signed public HTTPS URL through the configured proxy. This GET request returns a response body; interactive JavaScript pages use a browser session

The operator configures the proxy and permitted hostnames. A proxy failure ends the request without direct fallback. Run an IP check and an intended destination to verify a route; configuration alone does not prove connectivity or a distinct, stable IP

Capability errors and limits

target_not_allowed means the mask does not permit that destination. Choose an enabled target or create a mask with the required permission. egress_not_configured means the operator must configure the proxy; host_not_allowed means the requested host is outside the configured policy

There are 20 lifetime identities per workspace, 60 signed relay/resource operations per mask per hour and 120 issued challenges per mask per hour. Owner browser operations share the request quota. Revoked and archived identities still count toward workspace capacity

The relay checks and pins public destination addresses, verifies TLS, blocks redirects and caps responses at 64 KiB within eight seconds. Custom upstream bodies, cookies and headers are not exposed. See Infrastructure for server configuration

Browser & contacts

Open Resources to inspect provider readiness and assign resources to a mask. The operator adds API credentials on the server and explicitly authorizes the GitHub owners who may use paid providers. A configured status means the required settings are present; create and read a resource to verify it

MailboxAgentMail
Create one inbox per mask, list incoming messages and read a selected message. Message text is returned safely as text
Incoming SMSTwilio
Assign one unassigned SMS-capable number already owned by the configured account. Hider reads incoming messages received after assignment; buy and register numbers in Twilio first
Isolated browserBrowserbase
Start a fresh five-minute session with a managed proxy and recording disabled. Navigate, read page text, click a CSS-selected element or fill an input. Signed agent browser creation and page commands require the mask’s web permission

Your agent uses its signing key for its own resource operations. The downloaded client includes scripts/resources.mjs; start with node scripts/resources.mjs --key ./agent.key.json --action inventory. Provider keys and the browser CDP connection stay on the server. All commands, exact actions and signing bytes are in AGENTS.md

Provider costs and resource lifetime

Proxy traffic, browser runtime, inboxes and number rental may incur provider charges. Set account budgets and quotas. Hider does not purchase numbers or send SMS or email

Mailboxes and numbers remain assigned after mask revocation or archiving. Manage their ongoing costs in the provider account. Browser sessions expire after five minutes or can be explicitly closed

Message lists contain at most 25 items, with text capped at 64 KiB. Attachments and pagination are not exposed. External accounts use ordinary authorized login or OAuth; account trading and automatic Google/social registration are not provided

What stays visible

A mask gives your agent a distinct signing identity and a gateway route. It does not make the entire agent or its other network activity anonymous

Your device
Holds the private key and the responses you receive
Gateway & providers
Can observe identity, requests and the resources they operate. Hosting and provider retention policies are separate
Destination
Sees the selected network exit, request content, cookies, account login and browser characteristics where applicable

A fresh browser separates storage between sessions. Public-address checks and request interception do not make it a system network sandbox: remote DNS can differ and WebRTC/other transports are not covered by a leak-free claim. Tor, a system VPN and zero-knowledge access are not implemented. No mode promises complete anonymity

Revoke, archive and retained records

Revoke stops a mask from authorizing new requests and clears its outstanding challenges. It preserves past receipts and does not cancel a request already in flight

Archive moves an already revoked mask out of the normal list. Archived masks and their receipts remain inspectable in the workspace. Archiving does not delete records or restore workspace capacity

The activity store retains the last 200 receipts per mask. Receipts contain status, timing and byte count, but not response bodies or client IP addresses. Operator and hosting logs are separate and may retain connection metadata

API reference

Use JSON POST bodies with the exact documented fields. The agent guide includes the canonical signing messages, response shape and recovery codes

GET/api/overview

Masks, receipts and runtime limits

GitHub owner session
POST/api/agents

Register a public key and allowed targets

GitHub owner + matching Origin
POST/api/challenge

Request a fresh server nonce

Signed challenge request
POST/api/relay

Send a diagnostic or signed HTTPS GET

Signature + unused nonce
POST/api/agents/{id}/revoke

Stop future requests from a mask

GitHub owner + matching Origin
POST/api/agents/{id}/archive

Archive a revoked mask

GitHub owner + matching Origin
GET/api/resources

Provider readiness and assigned resources

GitHub owner session
POST/api/resources/mailbox

Create the mask’s AgentMail inbox

Authorized owner + matching Origin
POST/api/resources/phone

Assign an already-owned SMS number

Authorized owner + matching Origin
POST/api/resources/browser

Start a fresh browser with managed proxy

Authorized owner + matching Origin
POST/api/resources/agent

Read contacts and operate the mask’s browser

Signature + unused nonce

Start a fresh challenge for each request. Verify the returned origin and expiry before signing. Always inspect result.status, even when the relay API itself returns HTTP 200