stdio-to-HTTP bridge connecting any MCP client to Aerostack Workspaces, with pair-a-machine + always-on connector
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 8
filesystem 3
- fs (weak) package/scripts/install-launchagent.mjs :26
import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) package/scripts/install-systemd-unit.mjs :23
import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) package/scripts/postinstall.mjs :17
import { existsSync, readFileSync } from 'node:fs';
shell / exec 4
- shell package/dist/index.js :76
Ms:Date.now()-t})}let{execFile:Q}=await import("child_process"),z=Date.now();l("[chat-trace] CLI fallback starting",{sender:E,session:F,elapsedMs:z-t}),Q("openclaw",["agent","--agent","main","--json", - shell (weak) package/scripts/install-launchagent.mjs :29
import { execFileSync } from 'node:child_process'; - shell (weak) package/scripts/install-systemd-unit.mjs :26
import { execFileSync } from 'node:child_process'; - shell (weak) package/scripts/postinstall.mjs :21
import { spawn } from 'node:child_process';
network 4
- net package/dist/aerostack-connector.js :2
sion,fingerprint:e.fingerprint},n=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!n.ok)throw new Error(`register-pending ${n.status}: ${await n.te - net package/dist/cli.js :2
sion,fingerprint:e.fingerprint},r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!r.ok)throw new Error(`register-pending ${r.status}: ${await r.te - net package/dist/exec-approval-daemon.js :5
,method:e,params:t??{}};try{let r=await fetch(E,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${C}`,"User-Agent":"aerostack-exec-daemon/0.15.29","X-Agent-Id":"aerosta - net package/dist/index.js :3
uthorization=`Bearer ${e}`);let s=await fetch(n,{headers:t});if(!s.ok)return null;let r=await s.json(),o=r.status;return o==="executed"||o==="approved"?{status:o,reviewer_note:r.reviewer_note}:o==="re
secrets 3
- secrets package/dist/aerostack-connector.js :564
OPENCLAW_PORT,18789,1024),openclawToken:process.env.AEROSTACK_OPENCLAW_TOKEN??null,chatListenerEnabled:$e(process.env.AEROSTACK_CHAT_LISTENER,!0),hostedMode:process.env.AEROSTACK_HOSTED_MODE==="1"||pr - secrets package/dist/exec-approval-daemon.js :5
e=process.env.AEROSTACK_WORKSPACE_URL,t=process.env.AEROSTACK_TOKEN;if(e&&t)return{workspaceUrl:e,token:t};let n=_(v(),".openclaw","openclaw.json");try{let r=await b(n,"utf-8"),i=JSON.parse(r)?.mcp?.s - secrets package/dist/index.js :18
OPENCLAW_PORT,18789,1024),openclawToken:process.env.AEROSTACK_OPENCLAW_TOKEN??null,chatListenerEnabled:me(process.env.AEROSTACK_CHAT_LISTENER,!0),hostedMode:process.env.AEROSTACK_HOSTED_MODE==="
install hooks 2
- postinstall package/package.json :25
node scripts/postinstall.mjs - prepublishOnly package/package.json :26
npm run build
declared dependencies 9
- @modelcontextprotocol/sdk@^1.25.3
- better-sqlite3@^11.10.0
- bonjour-service@^1.3.0
- ws@^8.18.0
- @types/better-sqlite3@^7.6.13
- @types/node@^22.0.0
- @types/ws@^8.5.13
- esbuild@^0.28.0
- typescript@~5.8.3
perm:untrusted 1
- untrusted package/dist/cli.js :8
imeout(()=>r.abort(),t);try{let i=await fetch(e,{signal:r.signal}),s=await i.text().catch(()=>"");return{ok:i.ok,status:i.status,latencyMs:Date.now()-n,body:s}}catch{return{ok:!1,status:0,latencyMs:Da