Local AI assistant proxy — connect ChatGPT/Claude/Gemini/Qwen to your local filesystem & browser via a Chrome extension + sandboxed Go server.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 6ecc3e5 · analyzer v19 · 2d ago
skills & prompt files 14
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-browser-control/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-code-review/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-debug/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-edit-test/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-git-harness/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-platforms/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-safe-shell/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-security/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-self-dev/SKILL.md
- skillSirhap-PierCode-6ecc3e5/.skills/piercode-tool-protocol/SKILL.md
- agent-rulesSirhap-PierCode-6ecc3e5/AGENTS.md
- agent-rulesSirhap-PierCode-6ecc3e5/CLAUDE.md
- prompt-fileSirhap-PierCode-6ecc3e5/prompts/init_prompt.txt
- prompt-fileSirhap-PierCode-6ecc3e5/prompts/qwen_append.txt
evidence-backed
findings quoted directly from the published source artifact — not inferred
filesystem 5
- fs Sirhap-PierCode-6ecc3e5/extension/scripts/generate-icons.js :8
const fs = require('fs'); - fs Sirhap-PierCode-6ecc3e5/extension/vite.config.ts :4
import { copyFileSync, mkdirSync, existsSync } from 'fs' - fs Sirhap-PierCode-6ecc3e5/scripts/browser-live-smoke.mjs :2
import { existsSync, mkdirSync, rmSync, statSync, writeFileSync } from 'node:fs'; - fs Sirhap-PierCode-6ecc3e5/scripts/browser-smoke.mjs :3
import { existsSync, mkdirSync, rmSync, writeFileSync, statSync } from 'node:fs'; - fs Sirhap-PierCode-6ecc3e5/scripts/tools-e2e.mjs :3
import { existsSync, mkdirSync, rmSync, statSync, writeFileSync } from 'node:fs';
shell / exec 3
- shell Sirhap-PierCode-6ecc3e5/scripts/browser-smoke.mjs :2
import { spawn, spawnSync } from 'node:child_process'; - shell Sirhap-PierCode-6ecc3e5/scripts/qwen-context-e2e.mjs :1
import { spawn } from 'node:child_process'; - shell Sirhap-PierCode-6ecc3e5/scripts/tools-e2e.mjs :1
import { spawn, spawnSync } from 'node:child_process';
network 6
- net Sirhap-PierCode-6ecc3e5/extension/src/background/index.ts :208
const response = await fetch(apiEndpoint(info.apiUrl, '/stats'), { - net Sirhap-PierCode-6ecc3e5/extension/src/popup/App.tsx :209
fetch(`${url}/health`) - net Sirhap-PierCode-6ecc3e5/scripts/browser-live-smoke.mjs :1
import { createServer } from 'node:http'; - net Sirhap-PierCode-6ecc3e5/scripts/browser-smoke.mjs :1
import { createServer } from 'node:http'; - net Sirhap-PierCode-6ecc3e5/scripts/qwen-context-e2e.mjs :210
const response = await fetch(`${apiUrl}/stats`, { - net Sirhap-PierCode-6ecc3e5/scripts/tools-e2e.mjs :2
import { createServer } from 'node:http';
secrets 2
- secrets Sirhap-PierCode-6ecc3e5/scripts/browser-live-smoke.mjs :13
const token = process.env.PIERCODE_TOKEN || ''; - secrets Sirhap-PierCode-6ecc3e5/scripts/qwen-context-e2e.mjs :4
const token = process.env.PIERCODE_TOKEN || '';
declared dependencies 1
- ws@^8.21.0
clipboard 1
- navigator.clipboard Sirhap-PierCode-6ecc3e5/extension/src/content/index.ts :223
await navigator.clipboard.writeText(payload);