{"id":"81f44a4c-bd28-49e1-81a8-57cddc3e8b0b","slug":"cloakgpt","kind":"skill","name":"CloakGPT","summary":"A local CLI that drives your own ChatGPT session through CloakBrowser: persistent multi-turn conversations, concurrent sessions, model and reasoning selection, and Markdown answers with sources. Ships","owner":"KoukeNeko","repoUrl":"https://github.com/KoukeNeko/CloakGPT","license":"MIT","licenseTier":"permissive","trust":"community","stars":2,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-08-24T15:39:01.000Z","addedAt":"2026-10-21T11:30:00.557Z","logoUrl":"https://avatars.githubusercontent.com/u/111033412?u=361d2f8cb27e97be00494fae734057d03f864aae&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["browser-web","files-documents"],"tags":["ai-agents","automation","browser-automation","chatgpt","cli","llm","playwright","python"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T18:46:31.831Z","sample":false,"url":"https://conduits.dev/tools/cloakgpt","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<img width=\"1774\" height=\"887\" alt=\"image\" src=\"https://github.com/user-attachments/assets/af353f4c-b3f2-4924-ab12-793927f9bbbb\" />\n\n# CloakGPT\n\n[![CI](https://img.shields.io/github/actions/workflow/status/KoukeNeko/CloakGPT/ci.yml?branch=main&style=for-the-badge&label=CI)](https://github.com/KoukeNeko/CloakGPT/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/KoukeNeko/CloakGPT?style=for-the-badge)](https://github.com/KoukeNeko/CloakGPT/releases/latest)\n[![License](https://img.shields.io/github/license/KoukeNeko/CloakGPT?style=for-the-badge)](LICENSE)\n\n**Use your own ChatGPT browser session from the terminal.**\n\nCloakGPT is a local CLI that drives ChatGPT through CloakBrowser. **It does not\nuse the OpenAI API** — it operates the account you are already signed in to.\n\n- Persistent multi-turn conversations you can return to\n- Independent sessions running concurrently in one shared browser\n- Model (GPT-6 by default) and reasoning-level selection\n- Markdown answers with their citation sources\n- An OpenAI-compatible HTTP API server (`cloakgpt serve`) for Cline, Cursor, and Open WebUI\n- Sign-in on a Linux server without a desktop, through an SSH-tunneled web viewer\n- A portable Agent Skill so coding agents can drive it safely\n\n## Requirements\n\n- 64-bit Linux, macOS, or Windows\n- Permission to download and run [CloakBrowser](https://cloakbrowser.dev/), an\n  external binary under its own license\n- About 500 MB of free space\n\nA ChatGPT account is recommended rather than required. A one-shot `ask` works on\na signed-out profile; persistent sessions and choosing a model or reasoning\nlevel need an account. Signing in is a one-time visible `cloakgpt login`. It\nneeds a graphical desktop or, on a Linux server without one, a VNC web viewer\nreached over SSH; see [Sign in on a server without a desktop](#sign-in-on-a-server-without-a-desktop).\n\nA minimal Linux server or container may also lack the shared libraries\nCloakBrowser's Chromium needs, which stops the browser from starting even\nheadless. See [Installation](docs/installation.md#requirements) for the packages.\n\nPython, `pip`, Node.js, and Git are **not** needed to run a packaged release.\nFull details, including network and installer tooling, are in\n[Installation](docs/installation.md#requirements).\n\n## Install a release\n\nThe installers download the executable for the current platform, verify its\nSHA-256 checksum, install it for the current user, and then download the\nexternal CloakBrowser binary. If the browser download fails, CloakGPT remains\ninstalled and the completion MOTD prints the browser retry and login commands.\nWhen both components install successfully in an interactive terminal, the\ninstaller automatically opens the visible ChatGPT login flow. Over SSH on a Linux\nserver without a desktop, that flow is the remote login described below.\n\nChoosing a prerelease, pinning an exact version, changing the install\ndirectory, updating, and uninstalling are all covered in\n[Installation](docs/installation.md).\n\n### Linux and macOS\n\n```sh\ncurl -fsSLO https://raw.githubusercontent.com/KoukeNeko/CloakGPT/main/scripts/install.sh\nsh install.sh\nrm install.sh\n```\n\nThe default destination is `~/.local/bin/cloakgpt`. If that directory is not\nalready on `PATH`, add it to your shell configuration.\n\n### Windows\n\n```powershell\nInvoke-WebRequest https://raw.githubusercontent.com/KoukeNeko/CloakGPT/main/scripts/install.ps1 -OutFile install.ps1\npowershell -ExecutionPolicy Bypass -File .\\install.ps1\nRemove-Item .\\install.ps1\n```\n\nThe default destination is `%LOCALAPPDATA%\\Programs\\CloakGPT\\cloakgpt.exe`.\nThe installer adds that directory to the user `PATH`; open a new terminal after\ninstallation. CloakGPT uses the current terminal for CLI input and output; its\npersistent-session daemon runs without opening a separate console window.\nWindows text I/O is set to UTF-8 even when the terminal initially uses Big5\n(code page 950).\n\n## Use it\n\nSign in once, in a visible browser window. Skip this if you only want one-shot\nquestions on a signed-out profile:\n\n```sh\ncloakgpt login\n```\n\nAsk a one-shot question. It runs headless and returns Markdown, with a\n`## Sources` section when ChatGPT cited anything:\n\n```sh\ncloakgpt ask \"Summarize the tradeoffs of optimistic locking.\"\n```\n\nKeep a conversation across turns by opening a session once and reusing its ID.\nDifferent session IDs run concurrently through one shared browser:\n\n```sh\nSESSION=$(cloakgpt session open)\ncloakgpt ask \"Explain CRDTs briefly.\" --session \"$SESSION\"\ncloakgpt ask \"Now contrast them with OT.\" --session \"$SESSION\"\n```\n\nOmitting `--model` selects `gpt-6`; omitting `--reasoning` keeps whatever the\npage is already set to:\n\n```sh\ncloakgpt ask \"Design a rate limiter.\" --reasoning high --model gpt-5.6-sol\n```\n\nAgents should prefer a machine-readable event stream:\n\n```sh\ncloakgpt ask \"Reply only: OK.\" --output jsonl\n```\n\n### Sign in on a server without a desktop\n\nOn Linux without `DISPLAY` or `WAYLAND_DISPLAY`, such as Ubuntu Server or an LXC\ncontainer, `cloakgpt login` runs the browser on a temporary virtual display and\nserves it through a VNC web viewer bound to `127.0.0.1`. Install a VNC backend\non the server, then run login there:\n\n```sh\nsudo apt install tigervnc-standalone-server novnc websockify\ncloakgpt login\n```\n\nLogin prints an SSH tunnel command, such as\n`ssh -N -L 6100:127.0.0.1:6100 root@192.168.50.250`, and a viewer address. Run\nthe tunnel on your own computer, open the address in your browser, and sign in.\nThe virtual display stops when login finishes; `ask`, sessions, and `serve` stay\nheadless. Anyone who can open the viewer controls the login, so reach it only\nthrough SSH. KasmVNC, `--remote`/`--local`, and `--port` are covered in\n[Remote login](docs/usage.md#remote-login-on-a-headless-server).\n\n### OpenAI-compatible API server\n\nStart a local HTTP server for OpenAI clients such as Cline, Cursor, Open WebUI,\nand LangChain:\n\n```sh\ncloakgpt serve\n```\n\nConfigure your client with:\n\n- Base URL: `http://127.0.0.1:8000/v1`\n- Model ID: `gpt-6` or `gpt-5.6-sol`\n- API key: any non-empty value, or the value passed to `--api-key`\n\nStreaming replies start immediately and send keep-alive comments, so clients\nwith short header timeouts, such as Cline on Node.js, don't give up while the\nbrowser works. Browser progress such as thinking or web search streams as\n`delta.reasoning_content`. Follow-up turns in the same client task reuse the\nactive ChatGPT conversation, and a new task gets a fresh session.\n\nThe server listens on `127.0.0.1` by default. `--host 0.0.0.0` shares it with\nother devices on your network, and without `--api-key` anyone who can reach it\ncan send messages through your ChatGPT account, so always set `--api-key` when\nbinding beyond localhost.\n\nWaiting behavior, the JSONL protocol, concurrency rules, daemon control, server\noptions, and browser management are documented in [Usage](docs/usage.md).\n\n## Install the agent skill (recommended)\n\n`skills/use-cloakgpt` follows the portable\n[Agent Skills specification](https://openagentskills.dev/docs/specification),\nso the same `SKILL.md` works with Claude Code, Codex, Gemini CLI, and other\ncompatible coding agents. Review the skill before installing it; an agent will\nfollow its instructions with the permissions available to that agent.\n\nFor an interactive installation, run:\n\n```sh\nnpx -y skills add https://github.com/KoukeNeko/CloakGPT/tree/main/skills/use-cloakgpt -g\n```\n\nThe installer detects installed coding agents and asks which target to use when\na choice is needed. The person installing the skill does not need to know an\nagent slug.\n\nCommon slugs and their user-level destinations are:\n\n| Agent | Slug | Expected `SKILL.md` |\n| --- | --- | --- |\n| Claude Code | `claude-code` | `~/.claude/skills/use-cloakgpt/SKILL.md` |\n| Codex | `codex` | `$CODEX_HOME/skills/use-cloakgpt/SKILL.md`, or `~/.codex/skills/use-cloakgpt/SKILL.md` when `CODEX_HOME` is unset |\n| Gemini CLI | `gemini-cli` | `~/.gemini/skills/use-cloakgpt/SKILL.md` |\n\nDo not treat a successful installer exit code as proof that the current agent\ncan discover the skill. Check the native destination and reload or restart the\nagent when required.\n\nWant a coding agent to perform the whole installation and verify it? Hand it the\ntask in [Agent setup](docs/agent-setup.md).\n\n## Security and limitations\n\nCloakGPT is a local, user-level CLI, not a sandbox or an authorization service.\nIt intentionally drives a signed-in browser profile and can send messages, so\nanyone allowed to run it is trusted to operate that profile within the authority\nyou granted. Session IDs select local conversations; they are not ChatGPT\ncredentials. The browser profile, daemon metadata, and conversation URLs are\nsensitive local data and must not be committed or published.\n\nFull trust boundaries and data locations: [Security model](docs/security-model.md).\n\nCloakGPT is an unofficial browser-automation project. It is not affiliated with\nOpenAI, and using it is subject to the terms of the services it automates.\nCloakBrowser is a separately downloaded external binary under its own license and\ntrust boundary. Full text: [Legal](docs/legal.md).\n\n## Documentation\n\n| Page | What it covers |\n| --- | --- |\n| [Installation](docs/installation.md) | Requirements in full, release channels and assets, updating, uninstalling |\n| [Usage](docs/usage.md) | Login and remote login, browser management, waiting and JSONL contracts, sessions, page settings, the API server |\n| [Agent setup](docs/agent-setup.md) | Having a coding agent install and verify CloakGPT for you |\n| [Security model](docs/security-model.md) | Trust boundaries and where your data lives |\n| [Contributing](CONTRIBUTING.md) | Running from source, tests, building |\n| [Legal](docs/legal.md) | Full disclaimer |\n\n## License\n\nCloakGPT is available under the [MIT License](LICENSE). Third-party components\nand dependencies retain their respective licenses.\n\n"}