Built-in Tools¶
tether.tools.done¶
tether.tools.bash¶
tether.tools.edit¶
With edit enabled and bash not, a plain shell file write or read runs as edit: echo ok > f, printf 'a\nb' > f and cat > f << 'EOF' ... EOF as edit write f, cat f as edit view f, and >> f as edit append f. edit append <path> adds stdin to the end of a file (created if missing); edit write replaces it. Other shell commands answer unknown command with a pointer to edit.
tether.tools.web¶
Zero-config web search (DuckDuckGo Lite + Brave/Tavily/SearXNG env override) and reader.
PrivateAddressError
¶
Bases: PermissionError
Raised when web fetch targets a loopback/private/link-local address (SSRF guard).
HostNotAllowedError
¶
Bases: PermissionError
Raised when web targets a host outside the configured domain allowlist.
host_allowed(host, allow)
¶
Match a host against allowlist entries; IP literals are never allowed by name.
assert_public_url(request)
async
¶
Block fetches that resolve to non-global IPs (localhost, RFC1918, cloud metadata).
Runs as an httpx request hook, so every redirect hop is checked too. Opt out with TETHER_WEB_ALLOW_PRIVATE=1.
html_to_markdown(raw_html, max_chars=8000)
¶
Convert raw HTML into compact markdown-friendly text.
search_web_backend(query, max_results=5, web_allow=None)
async
¶
Search the web via SearXNG/Brave/Tavily if configured, else DuckDuckGo HTML.
assert_allowed_host(request, allow)
async
¶
Refuse hosts outside the allowlist; runs before the SSRF guard on every redirect hop.