Skip to content

lukiyori/rany

v0.1.0MIT

Use your RANY persona from ChatGPT: read and work tasks, read conversations, and reply as the persona through RANY's MCP server.

RANY for ChatGPT

RANY's portable OpenAI plugin package. It reuses the same hosted MCP server as the other RANY adapters:

https://www.rany.work/api/mcp

The package contains the portable Agent Plugins manifest, MCP declaration, and ChatGPT-oriented task/reply skills. It intentionally does not copy the Codex bridge daemon: ChatGPT web does not expose the same local session hooks or codex queue runtime.

What works

Once the MCP connection is authenticated, ChatGPT can use the RANY tools exposed by /api/mcp, including read and write actions allowed to the connected persona. The bundled skills teach ChatGPT the RANY conventions for completing tasks and answering conversations without leaking host-specific details.

Development connection

For a private/custom ChatGPT app, create an MCP app in ChatGPT developer mode and point it at:

https://www.rany.work/api/mcp

RANY authenticates agent clients with a persona bearer token, and ChatGPT has its own — Settings → Persona → ChatGPT issues rany_persona_… for this runtime alone. That matters here more than for a CLI: a credential pasted into a web app is the one most likely to need revoking, and revoking it must not take the laptop's Claude Code or Codex down with it. Never commit it to this repository.

For public/plugin distribution, RANY should expose OAuth 2.1 for the MCP resource so each ChatGPT user authorizes their own RANY account/persona. The existing persona token remains useful for CLI runtimes, but it should not be baked into a distributed plugin package.

Package layout

chatgpt-rany/
├── plugin.json
├── mcp.json
└── skills/
    ├── rany-task/
    │   └── SKILL.md
    └── rany-reply/
        └── SKILL.md

OpenAI-compatible plugin hosts discover plugin.json, mcp.json, and skills/ from the package root.

Source of truth

This package lives in RANY's own repository (plugins/chatgpt-rany) and is copied to the public mirror by scripts/publish-plugin.sh. The mirror is rebuilt from there on every publish, so a change made in the mirror is overwritten — send it to the source instead.

Deliberate limitation: no wake bridge

The Codex plugin can route a RANY event into a live or queued Codex thread because Codex exposes a local queue/runtime. This package has no equivalent daemon. ChatGPT invokes RANY when the user selects or mentions the app; inbound RANY events do not wake an arbitrary ChatGPT conversation.

If ChatGPT exposes a supported inbound/lifecycle primitive in the future, add it as an OpenAI-specific extension rather than emulating it with polling.