Local-first MCP authority layer for safe, bounded computer use and developer workflows.
개요
Orcel is an open-source, local-first MCP gateway that lets ChatGPT work with an explicitly trusted folder on your Windows computer through a small set of bounded tools, with local approval for anything that changes your computer. It connects through the OpenAI Secure MCP Tunnel, so no inbound port is opened on your machine. Orcel is not a remote shell, a remote desktop, or a "run anything" agent. Orcel is the current product and repository name. Older client installations, credentials, and state are not automatically migrated to the newly named CLI, packages, or environment variables. See the Orcel identity record before upgrading. https://github.com/TheHalfMoon/Orcel/releases Exactly these 31 tools are exposed over local MCP: Everything else is denied. Remote clients (ChatGPT through the tunnel or relay, and other providers) see only the 26-tool core profile: desktop observation, clipboard, and network fetch are local-only and cannot be reached remotely.
README
Orcel
Computer Orchestration & Trusted Runtime Access
Orcel is an open-source, local-first MCP gateway that lets ChatGPT work with an explicitly trusted folder on your Windows computer through a small set of bounded tools, with local approval for anything that changes your computer. It connects through the OpenAI Secure MCP Tunnel, so no inbound port is opened on your machine.
Orcel is not a remote shell, a remote desktop, or a “run anything” agent.
Identity migration: Orcel is the current product and repository name. Older client installations, credentials, and state are not automatically migrated to the newly named CLI, packages, or environment variables. See the Orcel identity record before upgrading.
Website: https://thehalfmoon.github.io/Orcel/
Canonical releases: https://github.com/TheHalfMoon/Orcel/releases
What ChatGPT can do through Orcel
Exactly these 31 tools are exposed over local MCP:
| Area | Tools | Approval |
|---|---|---|
| Status | system_status, workspace_get |
none (read-only) |
| Files in a trusted workspace | fs_stat, fs_list, fs_read, fs_read_range, fs_search, fs_find |
none (read-only, bounded) |
| File writes | fs_write_preview, fs_write, fs_edit, fs_mkdir, fs_move |
local approval for each write, bound to the exact content and current file hash |
| File removal | fs_remove |
Windows Hello (STRONG), single files or empty directories only |
| Desktop observation | desktop_window_list, desktop_window_tree |
none (read-only, bounded, local-only) |
| Clipboard | clipboard_read, clipboard_write |
local approval for each use; secrets refused; local-only |
| Network | web_fetch |
local approval per destination; public HTTPS only; local-only |
| Git (local) | git_status, git_diff, git_log |
none (read-only) |
| Git (local changes) | git_branch_create, git_stage, git_unstage, git_commit |
local approval, bound to the exact repository state |
| Git (network) | git_fetch_preview, git_fetch, git_push_preview, git_push |
local approval; see limitations |
| Processes | process_spawn |
local approval; see limitations |
Everything else is denied. Remote clients (ChatGPT through the tunnel or relay, and other providers) see only the 26-tool core profile: desktop observation, clipboard, and network fetch are local-only and cannot be reached remotely. Browser automation, screenshots, coordinate input, and UI actuation remain unreachable over MCP entirely.
Current limitations
process_spawnon Windows launches only locally registered, hash-pinned native executables with constrained argv; adding or changing a registry entry requires Windows Hello on the machine.git_fetchandgit_pushrequire destination policies that the current compatibility runtime does not configure yet, so they fail closed in an installed Orcel runtime.- Release binaries are not code-signed (there is no paid certificate under the project’s zero-cost rule). Windows SmartScreen may warn; verify the archive with
SHA256SUMS.txtand the GitHub build-provenance attestation. - Orcel runs only while you are signed in, because approvals appear on your desktop.
How approvals work
- SOFT approval — a Orcel dialog appears on your desktop describing the exact action (for example, the file and content hash). Approve or deny it yourself. Each approval is used once, expires quickly, and is bound to that exact action, workspace, and policy.
- STRONG approval — Windows Hello (PIN, fingerprint, or face) for trust changes and emergency revoke.
- ChatGPT cannot approve its own actions: approvals come only from the local broker, and Orcel’s own windows are excluded from automation.
orcel approvalslists recent decisions;orcel emergency-revokeinvalidates every pending approval.
Requirements
- Windows 10 version 1809 (build 17763) or later, or Windows 11, x64.
- Node.js 20 or later.
- The official OpenAI tunnel client executable, and a Secure MCP Tunnel id (
tunnel_…) and runtime key from OpenAI for your ChatGPT workspace. Follow OpenAI’s documentation to create them; Orcel does not create, download, or redistribute them. - No administrator rights. Do not use “Run as administrator”.
Install
The current transition release keeps the existing archive and executable names for compatibility.
- Download
orcel--windows-x64.zipandSHA256SUMS.txtfrom the project’s GitHub Releases page (release automation only prepares drafts; a release appears there once the maintainer publishes it) and verify the hash:
On Linux or WSL,$zip = "orcel--windows-x64.zip" $expected = ((Get-Content .\SHA256SUMS.txt) | Where-Object { $_ -like "* $zip" } | ForEach-Object { $_.Split(" ")[0] }) $actual = (Get-FileHash ".\$zip" -Algorithm SHA256).Hash.ToLower() if (-not $expected -or $actual -ne $expected) { throw "checksum mismatch: do not extract $zip" } else { "checksum OK" }sha256sum -c --ignore-missing SHA256SUMS.txtdoes the same. Optionally verify provenance:gh attestation verify .\orcel--windows-x64.zip --repo TheHalfMoon/Orcel. - Extract the archive and run, from the extracted folder:
.\orcel.exe installEvery file is checked againstmanifest.jsonbefore anything is copied. The compatibility installer currently installs to%LOCALAPPDATA%\Orcel, readable only by you (and Windows itself), and adds%LOCALAPPDATA%\Orcel\binto your user PATH (--no-pathto skip). Open a new terminal afterwards.
Configure
- Add a workspace (a folder ChatGPT may use):
orcel workspace add myproject C:\path\to\projectFolders that contain Orcel’s own protected data are refused. - Optionally grant workspace trust with Windows Hello:
orcel workspace trust myproject. - Configure the tunnel:
orcel tunnel setup --client C:\path\to\tunnel-client.exe --tunnel-id tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxYou are prompted for the runtime key without echo (or pass--key-file). The key is stored only in the protected local folder, passed to the tunnel client by file reference, and never printed or logged.
Connect ChatGPT
orcel start— starts the official tunnel client under Orcel’s supervisor. It reportsrunningonly when the tunnel client is alive and its local health endpoint answers.- In ChatGPT, connect to your Secure MCP Tunnel as described in OpenAI’s documentation. ChatGPT then sees the 26-tool core profile above.
Connect local MCP clients (no tunnel required)
Local clients that can launch a command use orcel mcp stdio. It starts the same authoritative MCP server over standard input and output, with the same 31 tools and the same local approvals. No tunnel setup is needed. Standard output stays the MCP channel, so run it only through the client configuration below, not by hand.
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"orcel": {
"command": "orcel",
"args": ["mcp", "stdio"]
}
}
}
Codex and other command-based clients use the same command and arguments:
{
"command": "orcel",
"args": ["mcp", "stdio"]
}
Mistral Vibe Code accepts a stdio entry in its MCP server list with command orcel and arguments ["mcp", "stdio"]. Generic MCP clients and the MCP Inspector connect with transport stdio, command orcel, and arguments ["mcp", "stdio"].
orcel here is the retained compatibility command at %LOCALAPPDATA%\Orcel\bin\orcel.exe on your user PATH after install. It resolves the active verified release on every launch, refuses tampered or inactive payloads, and fails closed when no workspace is configured. Tested per-client files live in examples/mcp-clients (Claude Desktop JSON and Desktop Extension manifest, Codex TOML, Vibe Code TOML, generic shapes, and the Inspector qualification script).
Connect over loopback HTTP (no tunnel required)
orcel mcp serve exposes the same 31 tools over Streamable HTTP on 127.0.0.1 only. It never binds a LAN address. Every request needs a per-user bearer credential:
$env:ORCEL_LOOPBACK_TOKEN = ""
orcel mcp serve
The listener prints its URL, for example http://127.0.0.1:54321/mcp, on standard error. Pass --port to choose the port instead of an ephemeral one. The credential is required on every request as Authorization: Bearer ; missing or wrong credentials fail closed, as do forged Host or browser Origin values. Browser pages on other origins cannot drive the listener. Keep the token on your machine and never commit it.
Mistral Vibe Code HTTP mode and generic Streamable HTTP clients connect to the printed URL with the bearer header. Clients that can launch a command should prefer orcel mcp stdio above.
Everyday commands
| Command | Purpose |
|---|---|
orcel status |
Installed version, configuration, and whether the runtime is running |
orcel doctor |
Full diagnostics; exits non-zero if any check fails (--json for details) |
orcel stop |
Stops the tunnel client and everything it started, and confirms they exited |
orcel workspace list |
Workspaces and their trust state |
orcel tunnel show |
Tunnel configuration (never the key) |
orcel help |
All commands |
Diagnose problems
Run orcel doctor. Each check reports PASS, WARN, FAIL, or ???? (could not be checked) with one line of evidence — Orcel never reports health it did not observe. Logs are currently stored in the compatibility path %LOCALAPPDATA%\Orcel\logs (tunnel.log, supervisor.log, lifecycle.log); tunnel output is redacted before it is written.
Update
Orcel never checks for or downloads updates by itself.
- Download and verify the new release as in Install, then extract it.
orcel update --source C:\path\to\extracted-release --checkshows the version change.orcel update --source C:\path\to\extracted-releasestops the runtime, switches versions, has the new version verify itself, and restarts it. If the new version fails its own check, the previous version is restored automatically andorcel doctorreports why.orcel rollbackreturns to the previous version. Older versions require--allow-downgrade.
Uninstall
orcel uninstallstops Orcel and removes its programs and the PATH entry. Your configuration, tunnel key, logs, and audit/approval/trust history are kept and listed.orcel uninstall --purge-data --yesalso deletes that data.- Your workspaces are never touched.
Security model and governance
- Architecture and delivery plan
- Current canonical state
- Threat model and v0.2 regression matrix
- Installer and lifecycle design
- Dependency and license review
- Diffcipline
- Orcel identity record
Building from source
npm ci --ignore-scripts && npm run build, then cargo build --release --locked -p orceld -p orcel-lifecycle --bins, then node scripts/package-release.mjs --out to assemble a release directory and node scripts/archive-release.mjs --release --out .zip to archive it. CI builds with the deterministic flags in .github/actions/build-package-qualify/action.yml and checks that an independent rebuild is byte-identical.
The orcel* Cargo and release identifiers in this command are compatibility identifiers retained during the Orcel rename and are not the current product brand.
License
Apache License 2.0. Third-party components and their licenses are listed in THIRD_PARTY_NOTICES.txt in each release.
설치
This server does not publish a one-line install command.
Open the repository installation guide설정
{
"mcpServers": {
"orcel": {
"command": "orcel",
"args": ["mcp", "stdio"]
}
}
}