AstrLink · On-device privacy
AstrLink · On-device privacy gateway
Secrets stay local. Agents keep working.
Your agent reads .env. The model doesn't need to.
AstrLink runs on your computer. It swaps secrets, phone numbers and names for placeholders before a request leaves, then restores them when the reply returns. Chain it with BeeHears (ai.beehears.com) — BeeHears manages keys, quotas and routing; AstrLink handles on-device redaction. AstrLink is an open-source project in the New API ecosystem; BeeHears does not own AstrLink.
# .env DB_URL=postgres://admin:[email protected]/prod ONCALL=Zhang Wei <[email protected]>
# .env DB_URL=postgres://admin:secret@IP/prod ONCALL=name <email>
Replies are restored on your machine, so your agent carries on. Fictional example — results depend on your policies.
Quotas on the server, privacy on the laptop
BeeHears manages keys and quotas. AstrLink redacts sensitive data on each developer machine first.
One local endpoint for everything
Point Claude Code, Codex and other agents at a single local address; upstream still goes through BeeHears.
See why an agent stalled
Who answered, how long it took, retries and estimated cost — inspectable on device.
Agent settings (typical)
| Base URL | http://127.0.0.1:8317/v1 |
| API Key | AstrLink access token |
| Model | A model ID available via BeeHears |
If the port is taken, AstrLink picks another. Use the one shown in the app. Configure AstrLink’s upstream provider to https://ai.beehears.com with your BeeHears token.
FAQ
How does it relate to BeeHears?
BeeHears is a New API–compatible relay for keys, quotas and routing. AstrLink redacts on your machine. You can chain them: agent → AstrLink (localhost) → BeeHears → upstream models.
Is content still sent to AI providers?
Yes. Your chosen providers still run inference on content your policies have processed.
Do I need the privacy model?
Built-in rules work right away. Download the model in the AstrLink app when you need to catch names and addresses.
Does it guarantee nothing leaks?
No. Detection can miss things and flag false matches. Try a dry run first and allowlist false matches.