Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/brand/social.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ jobs:
python-version: '3.13'
- name: Install dependency gate tooling
run: brew install jq ripgrep
- name: Verify canonical brand delivery
run: python3 Scripts/check-brand.py
- name: Validate Swift package
env:
BASE_COMMIT: ${{ github.event.pull_request.base.sha || github.event.before }}
Expand Down
8 changes: 8 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,11 @@ Do not install or bundle vendor Codex binaries. Keep generated schema provenance
Use Swift Testing. Run strict swift-format lint, swift build, swift test, schema
drift checks, and an isolated standard MCP client before handoff. Logs must never
write to the protocol stdout. Do not publish repositories or releases implicitly.

## Brand delivery

The main Computer MCP repository owns ProductIdentity and BRAND. Imported
`Documentation/Brand/header.svg` travels with the packaged manual;
`.github/brand/social.png` supplies the repository preview. `brand.lock.json`
binds both to canonical exports. Run `python3 Scripts/check-brand.py` locally
and in CI. Update imports with the main repository's `Scripts/brand.py sync`.
13 changes: 13 additions & 0 deletions Documentation/Brand/header.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# Codex Plugin
![Computer MCP — Codex](Documentation/Brand/header.svg)

# Computer MCP — Codex

Part of the [Computer MCP](https://computer-mcp.github.io/) family.
**Let ChatGPT use your local tools.**

This independent Swift package projects Codex execution through standard MCP.
It reuses Computer MCP's existing execution implementations and swift-codex.
Expand Down
31 changes: 31 additions & 0 deletions Scripts/check-brand.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env python3
"""Verify a repository's locked Computer MCP brand delivery without a source checkout."""

import hashlib
import json
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
LOCK = ROOT / "brand.lock.json"
if not LOCK.exists():
LOCK = ROOT / "public/brand/brand.lock.json"
record = json.loads(LOCK.read_text())
assert record["schema_version"] == 1, "Unsupported brand lock"
assert record["source"] == "https://github.com/computer-mcp/computer-mcp", "Unexpected brand authority"
for name, expected in record["files"].items():
path = ROOT / name
assert path.resolve().is_relative_to(ROOT), f"Invalid delivery path: {name}"
assert hashlib.sha256(path.read_bytes()).hexdigest() == expected, f"Brand delivery drift: {name}"
if record["consumer"] == "computer-mcp.github.io":
text = (ROOT / "index.html").read_text()
for promise in record["promise"].values():
assert promise in text, "Website promise differs from the imported brand"
assert 'brand/social-en.png' in text, "Website sharing artwork differs"
else:
manual = ROOT / ("profile/README.md" if record["consumer"] == ".github" else "README.md")
text = manual.read_text()
assert record["name"] in text, "Master name missing from public entry point"
assert record["promise"]["en"] in text, "Master promise missing from public entry point"
header = "brand/header.svg" if record["consumer"] == ".github" else "Documentation/Brand/header.svg"
assert header in text, "Family header missing from public entry point"
print(f"Locked Computer MCP brand verified for {record['consumer']}")
16 changes: 16 additions & 0 deletions brand.lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"schema_version": 1,
"source": "https://github.com/computer-mcp/computer-mcp",
"revision": "3c498108b1b847ae126fd2593cd0d3ddb4d0d9858d0dae214b1439ff69226e50",
"consumer": "plugin-codex",
"name": "Computer MCP",
"promise": {
"en": "Let ChatGPT use your local tools.",
"zh-CN": "\u8ba9 ChatGPT\uff0c\u7528\u4e0a\u4f60\u7684\u672c\u673a\u5de5\u5177\u3002"
},
"files": {
"Documentation/Brand/header.svg": "edd6495406ff02910d15e0614abc43a90a0d4b4e1360799692295a93da01f357",
".github/brand/social.png": "8eb4d0e49c300819e87d22984d0fc1058a98dfffe35b1dca99b8924c35eddc01",
"Scripts/check-brand.py": "2ec3c64469774b48fbfa6fbfa7f6a35c6a172fe4de347beb1881766632fbfdde"
}
}
Loading