# janee

Local secrets proxy for MCP agents. It hides API keys from model context and records an audit log for every external call.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 30
- Author: rsdouglas
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/rsdouglas/janee
- Updated: 2026-03-17
- HTML: https://affpapa.org/en/nevibecode/mcp/janee

## What it does

Janee acts as a middleman between your agent and external endpoints. You keep private credentials on your machine in `~/.janee/config.yaml`. The agent triggers actions via the `execute` tool. Janee attaches the real token and dispatches the call. Every request records a timestamp, HTTP path, and status code.

CLI tools run through an exec mode using the `janee_exec` tool. It maps secrets into environment variables for permitted processes. For repository tasks, Janee creates a temporary askpass script during `git push`. If a binary is missing from `--allow-commands`, Janee rejects the execution immediately.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `JANEE_CONFIG` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env JANEE_CONFIG=<JANEE_CONFIG> --transport stdio janee -- npx -y @true-and-useful/janee
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add janee --env JANEE_CONFIG=<JANEE_CONFIG> -- npx -y @true-and-useful/janee
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "janee": {
            "command": "npx",
            "args": [
                "-y",
                "@true-and-useful/janee"
            ],
            "env": {
                "JANEE_CONFIG": "<JANEE_CONFIG>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "janee": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@true-and-useful/janee"
            ],
            "env": {
                "JANEE_CONFIG": "<JANEE_CONFIG>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e JANEE_CONFIG=<JANEE_CONFIG> janee npx -y @true-and-useful/janee
```
Replace <…> with your own values

## When to use it
- keep private API tokens out of LLM conversation context
- execute git commands using transient credentials without exposing tokens
- enforce execution timeouts and command allowlists for agent subshells
- track an audit history of external API requests with status codes

## Example prompts
- Call the Stripe API through Janee to fetch recent customer transactions
- Push the current branch to GitHub via the `janee_exec` tool
- Publish a post with your CLI tool using the configured twitter capability

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [mcp](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — MCP server · ★ 12109
- [Robin: AI-Powered Dark Web OSINT](https://affpapa.org/en/nevibecode/mcp/robin-ai-powered-dark-web-osint.md) — MCP server · ★ 7658
- [jshookmcp](https://affpapa.org/en/nevibecode/mcp/jshookmcp.md) — MCP server · ★ 2061
- [OpenOSINT](https://affpapa.org/en/nevibecode/mcp/openosint.md) — MCP server · ★ 1802

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
