Tavily Hikari is not a replacement for Tavily. It is the proxy and control layer you run in front of your own Tavily keys.
It is responsible for:
/mcp and /api/tavily/*th-<id>-<secret> tokens to downstream usersThe real Tavily API keys still belong to you and remain under admin control.
If you want key-pool routing, request auditing, and quota enforcement, point clients at Tavily Hikari instead of exposing raw Tavily keys directly.
/mcp versus /api/tavily/*/mcp: for Codex CLI, Cursor, Claude Desktop, VS Code, and other MCP clients/api/tavily/*: for Cherry Studio, scripts, and plain HTTP integrationsIf the client setup only asks for a Base URL + API key, it usually belongs on /api/tavily/*.
No, but you do need at least one admin access strategy.
DEV_OPEN_ADMIN=true: only for local or temporary debuggingWithout one of those strategies, the service may boot, but you will not have a stable way to manage upstream keys.
No.
Linux DO OAuth is mainly for end-user sign-in and automatic Hikari token binding. If the service is admin-operated only, or tokens are provisioned manually, you can leave it disabled.
Long-lived state is stored in SQLite.
--db-path / PROXY_DB_PATH/srv/app/data/tavily_proxy.dbThat database usually carries key state, token bindings, request audit data, and other operational records, so persistence should be part of your deployment plan.
Use the docs site to deploy or integrate the product. Use Storybook to inspect the interface.
/admin does not open, or /api/keys returns 401That usually means the admin access model is incomplete.
Check in this order:
ADMIN_AUTH_FORWARD_ENABLED=trueFORWARD_AUTH_HEADER and FORWARD_AUTH_ADMIN_VALUE are configuredADMIN_AUTH_BUILTIN_ENABLED=trueADMIN_AUTH_BUILTIN_PASSWORD_HASH is configuredADMIN_AUTH_FORWARD_ENABLED=false when ForwardAuth is not in useDEV_OPEN_ADMIN=trueOne more important detail: the repository root docker-compose.yml only starts Hikari itself. It
does not automatically configure admin access.
/api/tavily/* returns 401 UnauthorizedFirst verify that the token is being passed in a Hikari-compatible way:
Authorization: Bearer th-<id>-<secret>POST /api/tavily/* JSON requests, the token may also be sent as api_key in the bodyGET /api/tavily/usage and GET /api/tavily/research/:request_id, use the
Authorization headerIf you are relying on DEV_OPEN_ADMIN=true, remember that this is only a local development
fallback, not a normal integration path.
/api/tavily/* returns 429 Too Many RequestsThat usually means either:
Check the user dashboard or call GET /api/tavily/usage first. Then adjust quota, tags, or issue a
new token if needed.
/api/tavily/* returns 502 Bad GatewayThe two most common causes are:
Check:
TAVILY_UPSTREAM and related upstream settings are correctThis is usually a persistence issue, not an application logic issue.
Make sure:
PROXY_DB_PATH points into a persistent volume or host-mounted directoryIf you use the default container path, persist at least /srv/app/data.
docker compose up -d works, but there is no admin entry on the homepageThat is expected behavior, not a bug.
The repository root docker-compose.yml only starts Hikari. It does not automatically enable:
If you want to operate the service from that compose stack, add an admin access model on top. The shortest path is documented in Deployment & Anonymity.
Local cross-links assume both local review services are running:
http://127.0.0.1:56006http://127.0.0.1:56007If only one of them is running, local cross-links can fail. The final GitHub Pages deployment does not depend on those local ports.
Look at the request-audit fields:
forwarded_headersdropped_headersFor the deeper design background, read
docs/high-anonymity-proxy.md.