Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
6bc27b7
docs(forside): ny forside - scenen bag dit vindue, loglinjer som bevi…
Oct 1, 2026
6a20932
docs(forside): kort udgave + 24 sekunders film af vaerktoejerne + Git…
Oct 2, 2026
fda2434
side: filmen til højre for teksten, og en menneskelig arbejdsgang
Oct 2, 2026
f09d008
side: use cases hvor intet API når frem, og en film der kun viser mål…
Oct 2, 2026
1db17e5
logo: laptop med en blå knap der trykkes, din markør foran og urørt
Oct 2, 2026
8715618
side: filmen viser nu alle fire use cases (32 s)
Oct 2, 2026
73c08d5
side: filmen viser de 19 brugsscenarier vi tester, med ærlig stilling
Oct 2, 2026
0ca5231
side: hvert kort i filmen ligner det rigtige program
Oct 2, 2026
30c41e9
side: skakbrættet rettet, 11 kort på 3 s, værktøjslinjen i billedteksten
Oct 2, 2026
9a7ee0a
side: mange side om side + lever på din Mac, mere ægte programmer, en…
Oct 2, 2026
ede577d
side: tavlen stram: 10 bevist, 5 delvist, 4 ikke testet
Oct 2, 2026
874fcc8
side: ret efter to uafhængige gennemlæsninger (7 bevist, 9 delvist, 3…
Oct 2, 2026
282d9ff
security: søgemaskine-verifikation ligger på siden, ikke i DNS
Oct 2, 2026
b9ea59c
side: stjernetallet sættes ind når siden bygges (slået fra indtil vid…
Oct 2, 2026
440df62
side: hero-videoen med i repoet (den globale gitignore spærrede *.mp4)
Oct 2, 2026
f2fa9c1
kanaler: README på GitHub/npm vises rigtigt, llms.txt siger sandt, ko…
Oct 2, 2026
8e54e4f
Merge release-grenen ind i forsiden (a46c6a3: sync-tal-rettelsen)
Oct 2, 2026
0f01355
Merge release-grenen (ac7da21) ind i forsiden igen
Oct 2, 2026
8363376
side: den tegnede film tilbage øverst, optagelsen ned som bevis
Oct 2, 2026
2fa43d5
side: stjernerne fra 1, ærlig optagelsestekst, lokal socket nævnt
Oct 2, 2026
fd20db8
side: «Made by Gustav Louv» fra PR #5 med på den nye forside
Oct 2, 2026
4441a36
side+README: ret de fund Opus-gennemgangen 3/10 fandt før live
Oct 3, 2026
6439c6d
claims 42b tæller programmer, ikke bundle-ID'er; npm-README afledt igen
Oct 3, 2026
bf9b73a
side: alle 22 undersider får forsidens design
Oct 6, 2026
a9de487
side: undersiderne får en visuel top som forsiden; kodeordspåstanden …
Oct 6, 2026
eba8bcd
side: forsiden linker til alle undersider («Go deeper») og bunden får…
Oct 6, 2026
0bac4b2
flader: Gemini-beskrivelsen og Windsurf rettet (e2e-gennemgang 6/10)
Oct 6, 2026
3361325
Merge #6 (cb8e118: README-rettelserne nu også i 0.2.1) ind i siden; d…
Oct 6, 2026
c114153
grafik: de tre gamle mørke billeder udskiftet i det nye design og san…
Oct 6, 2026
2c9bcc2
README: plakatens billedtekst beskriver de tre porte, som den nye pla…
Oct 7, 2026
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
50 changes: 50 additions & 0 deletions .github/workflows/side.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: side

# Udgiver computermcp.dev fra docs/ og sætter GitHub-stjernerne ind, mens siden bygges
# (scripts/stjerner.py). Ingen script og intet tredjepartskald i browseren: tallet står
# i HTML'en. Det opdateres ved hvert skub til main og én gang i døgnet.
#
# SLÅET FRA indtil to ting er gjort, begge af en der ejer repoet:
# 1. Settings > Pages > Source = «GitHub Actions» (i dag: «Deploy from a branch», main /docs)
# 2. Repo-variablen SIDE_VIA_ACTIONS = true (Settings > Secrets and variables > Actions > Variables)
# Uden variablen springes jobbet over (ikke rødt), og den klassiske udgivelse kører som før.
# Tilbage: sæt variablen til false og Source tilbage til «Deploy from a branch».

on:
push:
branches: [main]
paths: ['docs/**', 'scripts/stjerner.py', '.github/workflows/side.yml']
schedule:
- cron: '17 5 * * *'
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: false

jobs:
udgiv:
if: vars.SIDE_VIA_ACTIONS == 'true'
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.udgiv.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- name: Stjernerne ind i siden
env:
GH_TOKEN: ${{ github.token }}
run: |
n=$(gh api "repos/${{ github.repository }}" --jq .stargazers_count)
python3 scripts/stjerner.py docs/index.html "$n"
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: docs
- id: udgiv
uses: actions/deploy-pages@v4
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ videos/*/.hyperframes/
# blev TAVST holdt uden for repoet - sitet ville faa en <video> uden fil, og
# lokalt saa alting rigtigt ud fordi filen laa paa disken.
!docs/demo.mp4
!docs/hero-10.mp4
.dialog-kvittering

# MCPB-bundle build-output (bygges on demand med scripts/build-mcpb.sh)
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Computer MCP

<img src="docs/demo-poster.jpg" alt="A screenshot with the password field painted black, a consent dialog naming the app, and the audit log underneath" width="820">
<img src="docs/demo-poster.jpg" alt="Gate 1: a secure field painted black in memory before the screenshot is written. Gate 2: the menu bar icon turns orange and asks before a file goes to the Trash; password managers are refused. Gate 3: a log line where typed text is a length and a salted fingerprint." width="820">

**Computer use you can actually leave running.**

Expand Down Expand Up @@ -122,7 +122,7 @@ claude mcp add computer -- npx -y @agent360/computer-mcp
```

```jsonc
// Cursor, VS Code, Codex CLI, Windsurf - mcp.json
// Cursor, VS Code, Codex CLI - mcp.json
{
"mcpServers": {
"computer": { "command": "npx", "args": ["-y", "@agent360/computer-mcp"] }
Expand Down
225 changes: 158 additions & 67 deletions docs/404.html

Large diffs are not rendered by default.

Binary file modified docs/apple-touch-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
216 changes: 170 additions & 46 deletions docs/blog/driving-macos-from-an-ai-agent.html

Large diffs are not rendered by default.

194 changes: 164 additions & 30 deletions docs/blog/index.html

Large diffs are not rendered by default.

220 changes: 172 additions & 48 deletions docs/blog/screenshot-password-leak.html

Large diffs are not rendered by default.

Binary file modified docs/demo-poster.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/demo.mp4
Binary file not shown.
208 changes: 164 additions & 44 deletions docs/docs/capability-matrix/index.html

Large diffs are not rendered by default.

238 changes: 164 additions & 74 deletions docs/docs/install-claude-code/index.html

Large diffs are not rendered by default.

238 changes: 164 additions & 74 deletions docs/docs/install-claude-desktop/index.html

Large diffs are not rendered by default.

238 changes: 164 additions & 74 deletions docs/docs/install-codex/index.html

Large diffs are not rendered by default.

238 changes: 164 additions & 74 deletions docs/docs/install-copilot/index.html

Large diffs are not rendered by default.

238 changes: 164 additions & 74 deletions docs/docs/install-cursor/index.html

Large diffs are not rendered by default.

238 changes: 164 additions & 74 deletions docs/docs/install-vscode/index.html

Large diffs are not rendered by default.

243 changes: 167 additions & 76 deletions docs/docs/uninstall/index.html

Large diffs are not rendered by default.

251 changes: 171 additions & 80 deletions docs/docs/when-not-to-use/index.html

Large diffs are not rendered by default.

Binary file modified docs/favicon.ico
Binary file not shown.
Binary file added docs/hero-10.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/hero-10.mp4
Binary file not shown.
1,074 changes: 775 additions & 299 deletions docs/index.html

Large diffs are not rendered by default.

247 changes: 169 additions & 78 deletions docs/learn/computer-use-mcp/index.html

Large diffs are not rendered by default.

228 changes: 171 additions & 57 deletions docs/learn/mcp-security/index.html

Large diffs are not rendered by default.

253 changes: 168 additions & 85 deletions docs/learn/owasp-mcp-top-10/index.html

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions docs/llms-install.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ OpenAI Codex:
codex mcp add computer -- npx -y @agent360/computer-mcp@latest
```

Any other client (Cursor, VS Code, Windsurf, Cline) - write this into that
Any other client (Cursor, VS Code, Cline) - write this into that
client's MCP config:

```json
Expand All @@ -51,14 +51,14 @@ client's MCP config:
## Step 2 - pick the mode BEFORE the first run

This is the decision that matters. The default is `allow`, so an agent can be left
running; password managers, terminals, quitting and closing still ask. Set
running; terminals, quitting and closing still ask, and password managers are refused. Set
`CMCP_MODE` in the server's `env` block:

| `CMCP_MODE` | What the agent can do | Use it when |
|---|---|---|
| `readonly` | Only the 14 read tools are listed. The write tools do not exist as far as the model is concerned. | You are evaluating, or the agent only needs to look. **Start here.** |
| `ask` | The first write opens a dialog; one yes grants the session. Password managers ask every single time, terminals and editors once per session. | You want to approve before anything is touched. |
| `allow` | **Default.** Writes proceed without asking. Still logged. Password managers still ask every time, terminals and editors once per session. | Normal use: an agent you can leave running. |
| `ask` | The first write opens a dialog; one yes grants the session. Password managers are refused (with CMCP_BACKGROUND=0 they ask every time), terminals and editors ask once per session. | You want to approve before anything is touched. |
| `allow` | **Default.** Writes proceed without asking. Still logged. Password managers are still refused (with CMCP_BACKGROUND=0 they ask every time), terminals and editors ask once per session. | Normal use: an agent you can leave running. |

Recommend `readonly` for a first install and say why: nothing can go wrong, and
the user can see the tool list before granting anything.
Expand Down
21 changes: 12 additions & 9 deletions docs/llms.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
# Computer MCP

> A macOS computer-use MCP server with the guardrails on by default. Password
> fields are blacked out while the screenshot is still in memory, no click or
> keystroke happens until a human approves, and every call is written to an
> log that only grows. No account, no API key, no model inside it. MIT.
> A macOS computer-use MCP server that works in the windows behind yours. Password
> fields are blacked out while the screenshot is still in memory, deletions
> and sending a message ask a person first, password managers are refused, and every call
> is written to a log that only grows. No account, no API key, no model inside
> it. Free, local, MIT.

# FORBEHOLD
VERSION: npx serves 0.1.0, which has 12 tools. The 32 tools described below are
the source: they are built and tested but not published yet. Do not tell a user
that a tool is available after an npx install unless it is one of the twelve.
# /FORBEHOLD

Install: `npx @agent360/computer-mcp` (ships a signed universal binary; no Swift needed)
Install: `npx @agent360/computer-mcp` (ships a universal binary with an ad-hoc signature, not notarized; no Swift needed)
Repository: https://github.com/Agent360dk/computerMCP
npm: @agent360/computer-mcp
Registry name: io.github.Agent360dk/computer-mcp
Expand All @@ -33,7 +34,8 @@ for, because that machine also holds passwords, keys and production terminals.
windows of listed password managers are painted opaque black on the bitmap
in memory. The unredacted image is never written to disk.
2. Consent where it matters. Default mode `allow`: ordinary writes proceed
and are logged. Password managers ask every time regardless of mode or
and are logged. Password managers are refused in the default background
mode and ask every time with CMCP_BACKGROUND=0, regardless of mode or
prior approval; terminals and editors ask once per app per session;
quitting, closing and destructive-looking menu items ask every time.
`CMCP_MODE=ask` adds a dialog before the first write. An unanswered
Expand All @@ -49,10 +51,11 @@ for, because that machine also holds passwords, keys and production terminals.

- CMCP_MODE=readonly - write tools are not listed at all
- CMCP_MODE=ask - the first write opens a dialog that grants the session;
password managers ask every time, terminals and editors once per session
password managers are refused (with CMCP_BACKGROUND=0 they ask every time),
terminals and editors once per session
- CMCP_MODE=allow - DEFAULT; writes proceed without asking, still logged;
password managers still ask every time, terminals and editors once per
session, and that is not configurable
password managers are still refused (with CMCP_BACKGROUND=0 they ask every
time), terminals and editors once per session, and that is not configurable

## The 32 tools, 14 of them read-only

Expand Down
Binary file modified docs/logo-400.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 5 additions & 5 deletions docs/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/og-forside.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/og-image.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading