For anyone building apps that use AI
Keep all yourAI keys secured.
knectar is one safe place for your OpenAI, Anthropic, and other AI keys. Each app gets its own knectar key instead. Just simply switch off the knectar key when it leaks, and nothing else breaks. You also get a backup model of your choice when a provider goes down, and every request shows what it cost.
-
Your app
Today your OpenAI key sits in every app's .env. One leak means pasting a new key into all of them. With knectar, the app holds only its knectar key, in the same OPENAI_API_KEY spot.
sk-bf-a91f
-
knectar
Checks the knectar key, adds your OpenAI key and sends the request on. Your app never sees your OpenAI key.
OpenAI key added
-
OpenAI
Answers. The reply comes back through knectar to your app, and the request shows up in your logs with what it cost.
openai/gpt-4o-mini
-
Your backup model
If OpenAI fails or times out, the same request goes to the backup model you picked. You write no retry code.
anthropic/claude-haiku-4-5
-
Saved answers
Turn them on with one header. A repeat request gets the saved answer and never reaches OpenAI, so OpenAI never bills it. Best for repeat jobs, not chat.
x-bf-cache-key: my-job
knectar is running now. Our server measured these with our own test key in the last ten minutes. Your apps will use the AI keys you connect, not ours.
Status
Models our test key can reach
AI providers on our test key
One test request
Your dashboard
Logs: one row for every AI request.
Each row shows the model, how long it took, the tokens and what it cost. Click a row to read what was sent and what came back. These are sample rows.
- 01 One row for every AI request
- 02 Click a row to read the prompt and the reply
- 03 Filter by key, model or status
LLM logs
Observability
- Requests
- 1,284
- Success
- 99.5%
- Avg latency
- 852 ms
- Tokens
- 1.86M
- Cost
- $1.996
Request volume last 24 hours
- success
- error
- Peak 103
Top models
all time-
openai
-
anthropic
-
openai
Usage by key
all time| Status | Object | Model | Key | ||||
|---|---|---|---|---|---|---|---|
| 14:55:24 | processing | chat.completion | claude-haiku-4-5anthropic | billing-app | 812 | 1.24 s | $0.00080 |
| 14:55:17 | processing | chat.completion | gpt-4o-miniopenai | support-bot | 156 | 380 ms | $0 |
| 14:55:01 | success | chat.completion | claude-haiku-4-5anthropic | billing-app | 550 | 642 ms | $0.00110 |
| 14:54:39 | success | chat.completion | gpt-4o-miniopenai | support-bot | 120 | 38 ms | $0 |
| 14:54:16 | error | chat.completion | claude-haiku-4-5anthropic | billing-app | 0 | 214 ms | $0 |
| 14:53:53 | success | embedding | text-embedding-3-smallopenai | docs-search | 1,024 | 188 ms | $0 |
| 14:53:27 | success | chat.completion | gpt-4o-miniopenai | billing-app | 1,792 | 910 ms | $0.00050 |
| 14:53:00 | success | chat.completion | claude-haiku-4-5anthropic | billing-app | 3,984 | 2.21 s | $0.00740 |
| 14:52:32 | success | chat.completion | gpt-4o-miniopenai | support-bot | 176 | 42 ms | $0 |
| 14:52:05 | success | chat.completion | gpt-4o-miniopenai | support-bot | 360 | 730 ms | $0.00010 |
| 14:51:28 | error | chat.completion | gpt-4o-miniopenai | docs-search | 620 | 2.40 s | $0 |
| 14:50:57 | success | embedding | text-embedding-3-smallopenai | docs-search | 512 | 196 ms | $0 |
| 14:50:23 | success | chat.completion | claude-haiku-4-5anthropic | billing-app | 476 | 588 ms | $0.00100 |
| 14:49:46 | success | chat.completion | claude-haiku-4-5anthropic | support-bot | 2,850 | 1.76 s | $0.00530 |
| 14:49:00 | success | chat.completion | gpt-4o-miniopenai | billing-app | 102 | 51 ms | $0 |
| 14:48:17 | success | chat.completion | gpt-4o-miniopenai | docs-search | 1,200 | 820 ms | $0.00030 |
| 14:47:28 | error | chat.completion | gpt-4o-miniopenai | billing-app | 0 | 180 ms | $0 |
| 14:46:28 | success | chat.completion | claude-haiku-4-5anthropic | billing-app | 2,260 | 1.98 s | $0.00440 |
| 14:45:16 | success | embedding | text-embedding-3-smallopenai | docs-search | 768 | 204 ms | $0 |
| 14:43:48 | success | chat.completion | gpt-4o-miniopenai | support-bot | 254 | 57 ms | $0 |
| 14:41:38 | success | chat.completion | gpt-4o-miniopenai | billing-app | 538 | 664 ms | $0.00010 |
| 14:38:38 | success | chat.completion | claude-haiku-4-5anthropic | support-bot | 3,500 | 1.12 s | $0.00710 |
| 14:31:18 | success | chat.completion | claude-haiku-4-5anthropic | docs-search | 1,552 | 1.49 s | $0.00300 |
| 14:11:18 | success | chat.completion | gpt-4o-miniopenai | billing-app | 76 | 470 ms | $0 |
- Step 1 One row for every AI request
- Step 2 Click a row to read the prompt and the reply
- Step 3 Filter by key, model or status
Your dashboard
knectar keys: one for each app.
Create a key, swap it for a new one or delete it. The dashboard says mint for create, rotate for swap and virtual key for a knectar key. You see the full key once, so copy it then. Try it here. Nothing you type leaves your browser.
- 01 Create one key for each app
- 02 Swap a key for a new one
- 03 Delete a key and only that app stops
Virtual keys
Governance
- billing-app Active
948a••••••••••••••••••••••••••••26a9
$61.40 of $250.00 monthly600 requests every minute2 providers
- support-bot Active
5a56••••••••••••••••••••••••••••8093
$12.80 of $50.00 monthly120 requests every minute1 provider
- docs-search Active
0a82••••••••••••••••••••••••••••857d
No limits
- Step 1 Create one key for each app
- Step 2 Swap a key for a new one
- Step 3 Delete a key and only that app stops
Questions people ask before connecting an app.
Get your knectar key when sign-ups open.
Leave your email and we will write to you once, when sign-ups open. Nothing to pay today, and nothing to install. We run knectar for you.