agent-deepweb
curl-with-auth for AI agents
- Language
- Go
- Version
- 0.18.2
- License
- PolyForm Perimeter 1.0.0
- Category
- CLI Tool
Authenticated HTTP for LLM agents. The user registers profiles (bearer tokens, basic auth, cookies, form logins) under names; the agent invokes them by name and never sees the secret values. Structured JSON envelopes, response redaction, audited requests, and frozen-shape templates for the highest-safety flows.
Features
Profiles by name — LLM says --profile github, never sees the token
Five auth types — bearer, basic, cookie, custom header, form-login with cookie harvest
macOS Keychain + encrypted cookie jars — AES-256-GCM with per-profile keys
Request allowlists — per-profile host and path guards; redirects can't escape
Response redaction — headers, JSON fields, and literal-byte echoes masked in output
Templates — frozen request shapes authored by the human; LLM only fills parameters
Import sources — OpenAPI v3 / Swagger 2.0, GraphQL introspection, Postman, HAR, .http, curl
First-class JSON-RPC 2.0 verb alongside REST and GraphQL
Classified errors — every error includes fixable_by: agent|human|retry
Append-only audit log — every request written to ~/.config/agent-deepweb/audit.log
Passphrase-gated escalation — widening an allowlist, rotating a secret, setting a default header, allowing http or unmasking a cookie all need a short friendly phrase the human knows and the LLM does not
Bring-your-own jar — --cookiejar <path> lets an agent author a whole signup-then-authenticated-call flow without a registered profile; the jar is deliberately plaintext because the caller picked the path
Cookie sensitivity is classified, not guessed — HttpOnly plus name patterns mask values in jar show, with an explicit human override either way
Plain http refused for authenticated requests unless loopback, or opted into per profile
Redirects cannot escape the allowlist — a cross-allowlist hop is refused rather than followed
Install
Homebrew
$ brew install shhac/tap/agent-deepweb AI Agent Skill
$ npx skills add shhac/agent-skills --skill agent-deepweb --global GitHub Release (macOS)
$ curl -L https://github.com/shhac/agent-deepweb/releases/latest/download/agent-deepweb-darwin-arm64.tar.gz | tar xz Go Install
$ go install github.com/shhac/agent-deepweb/cmd/agent-deepweb@latest Build from Source
$ git clone https://github.com/shhac/agent-deepweb.git && cd agent-deepweb && make build Getting Started
The human registers profiles once; the LLM references them by name forever after. Secrets live in macOS Keychain when available, or in a mode-0600 file on Linux/Windows.
01 · Register a profile
$ agent-deepweb profile add github --type bearer --token ghp_xxx --domain api.github.com One-time setup by the human. The LLM never sees --token.
02 · Test it
$ agent-deepweb profile test github 03 · Fetch as the agent
$ agent-deepweb fetch https://api.github.com/user Profile auto-resolves by host. Output is a structured JSON envelope with status, headers, and body.
Usage
$ agent-deepweb fetch https://api.github.com/user $ agent-deepweb fetch https://api.example.com/v1/items --method POST --json '{"name":"x"}' --profile myapi $ agent-deepweb graphql https://api.github.com/graphql --profile github --query 'query { viewer { login } }' $ agent-deepweb jsonrpc https://node.example/rpc --profile chain --method eth_blockNumber $ agent-deepweb template import-openapi ./api.json --prefix github --profile github $ agent-deepweb template run github.get_user --param username=octocat $ agent-deepweb fetch https://example.com/healthz --profile none $ agent-deepweb audit tail -n 20