
Janee
io.github.rsdouglas由 GitHub 帳號 rsdouglas 發布v0.8.5更新於 Oct 24, 2026
Secure secrets proxy for AI agents — manages API keys so agents never see raw credentials.
概覽
Janee 是本地密鑰代理,讓 AI 助理在不接觸原始憑證的情況下呼叫 API 並執行 CLI 工具。
- 可以做什麼
- Janee 將 API 金鑰加密保存在本機,並提供 list_services、execute、exec、manage_credential 與 reload_config 等 MCP 工具。助理要求某個 capability 後,Janee 會把真實憑證注入 HTTP 請求或啟動的 CLI 程序,只回傳回應或 stdout/stderr。它支援 bearer、basic、自訂標頭、交易所 HMAC 簽章、Google 服務帳戶、GitHub App 權杖、Twitter/X OAuth 1.0a 與 AWS SigV4,並提供依 capability 的請求允許/拒絕規則、工作階段 TTL、代理白名單與稽核記錄。
- 適用情境
- 當助理需要存取第三方 API 或 CLI 工具,但你不希望原始金鑰進入模型上下文時使用。它適合多個代理共用一份憑證庫,或需要請求層級政策、短時工作階段與可撤銷稽核紀錄的情境。
- 執行需求
- 以 Node.js npm 套件(@true-and-useful/janee)在本機透過 stdio 執行,也可用 HTTP 模式供容器使用。需要設定檔,路徑由環境變數 JANEE_CONFIG 指定,通常為 ~/.janee/config.yaml,以及每個註冊服務的 API 金鑰、權杖、PEM 檔案或應用程式 ID。僅支援桌面端,無遠端端點。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Janee,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Janee 🔐
Secrets management for AI agents via MCP
[npm version] [npm downloads] [License: MIT] [GitHub stars]
Your AI agents need API access to be useful. But they shouldn't have your raw API keys. Janee sits between your agents and your APIs — injecting credentials, enforcing policies, and logging everything.
✨ Features
The Problem
AI agents need API access to be useful. The current approach is to give them your keys and hope they behave.
- 🔓 Agents have full access to Stripe, Gmail, databases
- 📊 No audit trail of what was accessed or why
- 🚫 No kill switch when things go wrong
- 💉 One prompt injection away from disaster
The Solution
Janee is an MCP server that manages API secrets for AI agents:
- Store your API keys — encrypted locally in
~/.janee/ - Run
janee serve— starts MCP server - Agent requests access — via
executeMCP tool - Janee injects the real key — agent never sees it
- Everything is logged — full audit trail
Your keys stay on your machine. Agents never see them. You stay in control.
Configure Once, Use Everywhere
Set up your APIs in Janee once:
Now every agent that connects to Janee can use them:
- Claude Desktop — access your APIs
- Cursor — access your APIs
- OpenClaw — access your APIs
- Any MCP client — access your APIs
No more copying keys between tools. No more "which agent has which API configured?" Add a new agent? It already has access to everything. Revoke a key? Update it once in Janee.
One config. Every agent. Full audit trail.
Quick Start
Install
Initialize
This creates ~/.janee/config.yaml with example services.
Add Services
Option 1: Interactive (recommended for first-time users)
Janee will guide you through adding a service:
Using an AI agent? See Non-interactive Setup for flags that skip prompts, or the agent-specific guides below.
Option 2: Edit config directly
Edit ~/.janee/config.yaml:
Add CLI tools (exec mode)
Some tools need credentials as environment variables, not HTTP headers. Exec mode handles this:
Now agents can run CLI tools through Janee without ever seeing the API key:
Janee spawns the process with TWITTER_API_KEY injected, runs the command, and returns stdout/stderr. The credential never enters the agent's context.
Key flags:
--exec— configure as exec-mode (CLI wrapper instead of HTTP proxy)--allow-commands— whitelist of allowed executables (security)--env-map— map credentials to environment variables--work-dir— working directory for the subprocess--timeout— max execution time (default: 30s)
Git operations (automatic HTTPS auth)
When using exec mode with GitHub credentials, Janee automatically handles git authentication. No extra configuration needed — git push, git pull, and git clone just work:
Janee detects git commands with GH_TOKEN/GITHUB_TOKEN in the environment and creates a temporary askpass script for HTTPS authentication. The script is cleaned up automatically after the command completes.
Add GitHub App auth (for autonomous agents)
Static tokens are risky for long-running agents. GitHub App auth generates short-lived installation tokens on demand — no long-lived PATs required.
Option 1: Use create-gh-app (recommended)
Done. Your agent now gets short-lived GitHub tokens through Janee's MCP proxy.
Option 2: Manual setup
Or via config:
How it works: When an agent requests access, Janee signs a JWT with the app's private key, exchanges it for a 1-hour installation token via GitHub's API, and caches the token until expiry. The agent never sees the private key — only the short-lived token reaches the API.
Start the MCP server
Use with your agent
Agents that support MCP (Claude Desktop, Cursor, OpenClaw) can now call the execute tool to make API requests through Janee:
Janee decrypts the key, makes the request, logs everything, and returns the response.
Integrations
Works with any agent that speaks MCP:
- OpenClaw — Native plugin (
@true-and-useful/janee-openclaw)- Containerized agents? See Container setup guide
- Cursor — Setup guide
- Claude Code — Setup guide
- Codex CLI — Setup guide
- Any MCP client — just point at
janee serve
OpenClaw Integration
If you're using OpenClaw, install the plugin for native tool support:
Enable in your agent config:
Your agent now has these tools:
janee_list_services— Discover available APIsjanee_execute— Make API requests through Janee
The plugin spawns janee serve automatically. All requests are logged to ~/.janee/logs/.
MCP Tools
Janee exposes three MCP tools:
Agents discover what's available, then call APIs through Janee. Same audit trail, same protection.
Configuration
Config lives in ~/.janee/config.yaml:
Services = Real APIs with real keys
Capabilities = What agents can request, with policies
Supported auth types
Twitter/X OAuth 1.0a
Janee computes OAuth 1.0a signatures (HMAC-SHA1) server-side, so your 4 Twitter secrets stay encrypted at rest and never enter the agent's context:
Or use the built-in template:
AWS SigV4
Janee computes AWS Signature V4 (HMAC-SHA256) per-request, keeping your access keys encrypted at rest. Non-secret fields (region, awsService) stay in plain config:
Built-in templates for common AWS services:
Access control
Control which agents can use which capabilities:
defaultAccess: restricted— capabilities without anallowedAgentslist are hidden from all agentsdefaultAccess: open(default) — capabilities without anallowedAgentslist are available to all agentsallowedAgents— per-capability list of agent names (matched againstclientInfo.namefrom the MCP initialize handshake)
Credentials created by agents at runtime default to agent-only access — only the creating agent can use them unless it explicitly grants access via the manage_credential tool.
Exec mode capabilities
Exec-mode capabilities use janee_exec instead of execute. The credential is injected as an environment variable — the agent sees only stdout/stderr.
Runner hardening defaults in exec mode:
- isolated minimal environment (no full host env inheritance)
- temporary
HOMEper command - timeout kills the process group
Runner/Authority mode (for containers)
When agents run inside Docker containers, janee_exec on a remote host cannot access the container filesystem. The Runner/Authority architecture solves this:
- Authority runs on the host: holds credentials, enforces policy, proxies API requests
- Runner runs inside each container: serves MCP to the agent, forwards non-exec calls to the Authority, runs
janee_execlocally
The agent only needs JANEE_URL=http://localhost:3200.
You can also run the Authority as a standalone process:
See the Runner/Authority guide for the full architecture, exec authorization flow, Docker Compose example, and troubleshooting.
Request Policies
Control exactly what requests each capability can make using rules:
How rules work:
denypatterns are checked first — explicit deny always wins- Then
allowpatterns are checked — must match to proceed - No rules defined → allow all (backward compatible)
- Rules defined but no match → denied by default
Pattern format: METHOD PATH
GET *→ any GET requestPOST /v1/charges/*→ POST to /v1/charges/ and subpaths* /v1/customers→ any method to /v1/customersDELETE /v1/customers/*→ DELETE any customer
This makes security real: Even if an agent lies about its "reason", it can only access the endpoints the policy allows. Enforcement happens server-side.
CLI Reference
Non-interactive Setup (for AI agents)
AI agents can't respond to interactive prompts. Use --*-from-env flags to read credentials from environment variables — this keeps secrets out of the agent's context window:
When all required credentials are provided via flags, Janee:
- Never opens readline (no hanging on stdin)
- Auto-creates a capability with sensible defaults (1h TTL, auto-approve)
You can also edit ~/.janee/config.yaml directly if you prefer.
How It Works
- Agent calls
executeMCP tool with capability, method, path - Janee looks up service config, decrypts the real key
- Makes HTTP request to real API with key
- Logs: timestamp, service, method, path, status
- Returns response to agent
Agent never touches the real key.
📐 Deep dive: See Architecture & Security Model for detailed diagrams, threat model, and comparison with alternatives.
Security
- Encryption: Keys stored with AES-256-GCM
- Agent identity: Derived from
clientInfo.namein the MCP initialize handshake — no custom headers needed - Agent isolation: Each agent gets its own session with isolated identity (HTTP transport creates a Server+Transport per session)
- Access control: Per-capability
allowedAgentswhitelist + server-widedefaultAccesspolicy - Credential scoping: Agent-created credentials default to
agent-only - Audit log: Every request logged to
~/.janee/logs/ - Sessions: Time-limited, revocable
- Kill switch:
janee revokeor delete config
Docker
Run Janee as a container — no local Node.js required:
Or use Docker Compose:
For Claude Desktop with Docker, see Docker docs.
Contributing
We welcome contributions! Please read CONTRIBUTING.md before submitting a PR — it includes the required PR checklist (tests, changelog, version bump, etc.).
License
MIT — Built by True and Useful LLC
Stop giving AI agents your keys. Start controlling access. 🔐
來源:README.md,提交 0123448
工具
0版本歷史
1- v0.8.5最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分