Lightweight Rust Agent only use 50MB RAM, but Claude Code Plugin compatible, Dynamic Workflow, Goal, Artifacts, Free Web Search, full feature and better support!
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http counts 2 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
chat/history
-
chat/send
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit fcc3f6f · analyzer v33 · 22h ago
skills & prompt files 34
- agent-rules KonghaYao-peri-fcc3f6f/.claude/agents/advisor.md
- agent-rules KonghaYao-peri-fcc3f6f/.claude/agents/code-reviewer.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/advisor-consultation/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/agent-task-evaluator/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/auto-converge/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/auto-data-researcher/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/auto-devflow/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/blog-writer/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/codebase-index/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/heavy-verify-loop/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/langfuse/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/learn-from-history/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/multitask/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/project-maturity/SKILL.md
- skill KonghaYao-peri-fcc3f6f/.claude/skills/ssh-cli/SKILL.md
- agent-rules KonghaYao-peri-fcc3f6f/CLAUDE.md
- prompt-file KonghaYao-peri-fcc3f6f/docs/design/system-prompt.md
- agent-rules KonghaYao-peri-fcc3f6f/e2e/CLAUDE.md
- agent-rules KonghaYao-peri-fcc3f6f/example/minimal/.claude/agents/minimal-helper.md
- agent-rules KonghaYao-peri-fcc3f6f/example/minimal/CLAUDE.md
- agent-rules KonghaYao-peri-fcc3f6f/peri-acp/CLAUDE.md
- agent-rules KonghaYao-peri-fcc3f6f/peri-agent/CLAUDE.md
- agent-rules KonghaYao-peri-fcc3f6f/peri-middlewares/CLAUDE.md
- skill KonghaYao-peri-fcc3f6f/peri-middlewares/src/skills/builtin/skills/cron/SKILL.md
- skill KonghaYao-peri-fcc3f6f/peri-middlewares/src/skills/builtin/skills/goal/SKILL.md
- skill KonghaYao-peri-fcc3f6f/peri-middlewares/src/skills/builtin/skills/programmatic-tool-calling/SKILL.md
- skill KonghaYao-peri-fcc3f6f/peri-middlewares/src/skills/builtin/skills/ultra-adlc/SKILL.md
- skill KonghaYao-peri-fcc3f6f/peri-middlewares/src/skills/builtin/skills/ultracode/SKILL.md
- skill KonghaYao-peri-fcc3f6f/peri-middlewares/src/skills/builtin/skills/use-artifacts/SKILL.md
- agent-rules KonghaYao-peri-fcc3f6f/peri-middlewares/src/subagent/tool/descriptions/agent.md
- agent-rules KonghaYao-peri-fcc3f6f/peri-tui/CLAUDE.md
- prompt-file KonghaYao-peri-fcc3f6f/prompts/ai-text-in-streaming.md
- prompt-file KonghaYao-peri-fcc3f6f/prompts/issues.md
- prompt-file KonghaYao-peri-fcc3f6f/prompts/subagent.md
danger signals4
- dynamic code execution new Function() KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/src/adapter.ts :168
const run = new Function("tools", "input", "console", `return (async () => { ${params.source}\n })()`) as ExecuteFunction; - dynamic code execution new Function() KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/dist/peri-workflow.js :1542
metaObj = new Function(`return (${literal})`)(); - committed secret Anthropic key KonghaYao-peri-fcc3f6f/peri-tui/src/app/setup_wizard/setup_wizard_test.rs :58
sk-ant…(31 chars, redacted) - credential in logs credential in log KonghaYao-peri-fcc3f6f/side-projects/daytona/src/commands/init.ts :50
console.log(` API Key ****${apiKey.slice(-4)}`);
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 1613
filesystem 55
- fs (weak) KonghaYao-peri-fcc3f6f/.claude/skills/langfuse/scripts/context-growth.mjs :8
import { readdirSync, readFileSync } from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/.claude/skills/langfuse/scripts/llm-log-query.mjs :9
import { readdirSync, readFileSync, existsSync, statSync } from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/.claude/skills/ssh-cli/scripts/ssh-cli.js :43
const fs = require('fs'); - fs (weak) KonghaYao-peri-fcc3f6f/e2e/helpers/peri.ts :8
import fs from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/helpers/recorder.ts :10
import fs from "node:fs/promises"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/helpers/workflow.ts :4
import { existsSync, readdirSync, readFileSync } from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/scripts/generate-report.ts :14
import fs from "node:fs/promises"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/scripts/run-e2e.mjs :22
import { existsSync, readFileSync } from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/panels/model-switch.test.ts :17
import fs from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/panels/plugin-uninstall-no-freeze.test.ts :12
import fs from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/panels/plugin.test.ts :10
import fs from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/scenarios/fresh-setup.test.ts :6
import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from "node:fs/promises";
show 28 more
- fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/scenarios/legacy-history-upgrade.test.ts :3
import fs from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/scenarios/rewind-v2.test.ts :16
import fs from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/smoke/steer-queue-live.test.ts :4
import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/subagent/multi-subagent-toolcards.test.ts :27
import { readFileSync } from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/tool-cards/edit-diff.test.ts :19
import * as fs from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/e2e/tests/workflow/workflow-reporting.test.ts :14
import { readFileSync, readdirSync, existsSync } from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/scripts/build.ts :1
import { mkdir, rm } from "node:fs/promises"; - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/scripts/check-dist.ts :3
import { mkdtemp, readFile, rm } from "node:fs/promises"; - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/scripts/pack-smoke.ts :2
import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/dist/peri-workflow.js :4
import { readFileSync as readFileSync2 } from "node:fs"; - fs KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/src/adlc.ts :17
} from 'node:fs' - fs KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/src/boundary.ts :22
} from 'node:fs' - fs KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/src/cli.ts :7
import { readFileSync } from 'node:fs' - fs KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/src/reader.ts :13
import { existsSync, readdirSync, readFileSync } from 'node:fs' - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/test/adlc.test.ts :3
import { mkdtempSync, rmSync, symlinkSync, truncateSync, writeFileSync } from 'node:fs' - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/test/boundary.test.ts :4
import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, symlinkSync, writeFileSync } from 'node:fs' - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/test/cli.test.ts :8
import { mkdtempSync, mkdirSync, writeFileSync } from 'node:fs' - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/test/e2e.test.ts :12
import { mkdtempSync, mkdirSync, writeFileSync, existsSync } from 'node:fs' - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/test/reader.test.ts :16
import { mkdtempSync, mkdirSync, writeFileSync } from 'node:fs' - fs (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/test/validate.test.ts :95
const r = validateScript(`import fs from 'node:fs'\nexport const meta = { name: 'x', description: 'y' }\nreturn 1`) - fs (weak) KonghaYao-peri-fcc3f6f/scripts/migrate-opencode-to-peri.ts :35
import { existsSync, statSync, unlinkSync } from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/side-projects/agent-defect-analyzer/src/analysis/metrics.test.ts :3
import { mkdtempSync, rmSync } from "fs"; - fs (weak) KonghaYao-peri-fcc3f6f/side-projects/agent-defect-analyzer/src/cli.test.ts :2
import { existsSync, mkdtempSync, readFileSync, writeFileSync } from "node:fs"; - fs KonghaYao-peri-fcc3f6f/side-projects/agent-defect-analyzer/src/cli.ts :1
import { existsSync, mkdirSync, statSync, writeFileSync } from "node:fs"; - fs (weak) KonghaYao-peri-fcc3f6f/side-projects/agent-defect-analyzer/src/data/data.test.ts :3
import { mkdtempSync, rmSync } from "fs"; - fs (weak) KonghaYao-peri-fcc3f6f/side-projects/agent-defect-analyzer/src/reporting/compare.test.ts :2
import { mkdtempSync, readFileSync, writeFileSync } from "node:fs"; - fs KonghaYao-peri-fcc3f6f/side-projects/agent-defect-analyzer/src/reporting/compare.ts :1
import { readFileSync, writeFileSync, mkdirSync } from "node:fs"; - fs KonghaYao-peri-fcc3f6f/side-projects/agent-defect-analyzer/src/reporting/quality.ts :2
import { mkdirSync, writeFileSync } from "node:fs";
15 more not shown — this panel samples each group; the count above is the real total.
shell / exec 16
- shell (weak) KonghaYao-peri-fcc3f6f/.claude/skills/ssh-cli/scripts/ssh-cli.js :42
const { spawn, spawnSync } = require('child_process'); - shell (weak) KonghaYao-peri-fcc3f6f/e2e/helpers/peri.ts :215
const { exec } = await import("node:child_process"); - shell (weak) KonghaYao-peri-fcc3f6f/e2e/scripts/run-e2e.mjs :20
import { spawn } from "node:child_process"; - shell (weak) KonghaYao-peri-fcc3f6f/e2e/tests/scenarios/fresh-setup.test.ts :4
import { execFile } from "node:child_process"; - shell (weak) KonghaYao-peri-fcc3f6f/e2e/tests/scenarios/legacy-history-upgrade.test.ts :8
import { execFileSync } from "node:child_process"; - shell (weak) KonghaYao-peri-fcc3f6f/e2e/tests/setup.ts :7
import { exec } from "node:child_process"; - shell (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/scripts/build.ts :2
import { spawn } from "node:child_process"; - shell (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/scripts/check-dist.ts :6
import { spawnSync } from "node:child_process"; - shell (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/scripts/pack-smoke.ts :3
import { spawn, type SpawnOptionsWithoutStdio } from "node:child_process"; - shell (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/test/dist-e2e.test.ts :2
import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process"; - shell KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/dist/peri-workflow.js :494
import { spawnSync } from "node:child_process"; - shell (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/scripts/check-coverage.mjs :9
import { spawnSync } from 'node:child_process'
show 4 more
- shell KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/src/boundary.ts :9
import { spawnSync } from 'node:child_process' - shell (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/test/boundary.test.ts :2
import { execFileSync } from 'node:child_process' - shell (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/test/e2e.test.ts :23
const r = Bun.spawnSync({ - shell KonghaYao-peri-fcc3f6f/side-projects/mcp-apps/check-peri.ts :1
import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process";
network 13
- net (weak) KonghaYao-peri-fcc3f6f/.claude/skills/langfuse/scripts/lib.ts :14
const res = await fetch(`${BASE_URL}${path}`, { - net (weak) KonghaYao-peri-fcc3f6f/e2e/tests/scenarios/fresh-setup.test.ts :3
import { createServer, type Server } from "node:http"; - net (weak) KonghaYao-peri-fcc3f6f/e2e/tests/smoke/steer-queue-live.test.ts :3
import { createServer, type Server, type ServerResponse } from "node:http"; - net (weak) KonghaYao-peri-fcc3f6f/side-projects/llm-gateway/index.test.ts :489
const res = await fetch(`http://localhost:${testPort}/health`); - net KonghaYao-peri-fcc3f6f/side-projects/llm-gateway/index.ts :206
upstreamRes = await fetch(url, { - net KonghaYao-peri-fcc3f6f/side-projects/mcp-apps/chat/server.ts :281
async fetch(req: Request): Promise<Response> { - net KonghaYao-peri-fcc3f6f/side-projects/mcp-apps/check-peri.ts :3
import http from "node:http"; - net KonghaYao-peri-fcc3f6f/side-projects/peri-db-viewer/src/public/js/app.js :6
const resp = await fetch(url); - net KonghaYao-peri-fcc3f6f/side-projects/peri-sync/server/src/cf-worker.ts :41
async fetch(request: Request, env: WorkerEnv): Promise<Response> { - net KonghaYao-peri-fcc3f6f/side-projects/peri-sync/server/src/channel-do.ts :140
async fetch(request: Request): Promise<Response> { - net KonghaYao-peri-fcc3f6f/side-projects/peri-sync/server/src/code-index-do.ts :72
async fetch(request: Request): Promise<Response> { - net KonghaYao-peri-fcc3f6f/side-projects/peri-sync/server/src/index.ts :116
fetch(req, server) {
show 1 more
- net KonghaYao-peri-fcc3f6f/side-projects/peri-sync/server/src/pair-do.ts :24
async fetch(request: Request): Promise<Response> {
secrets 8
- secrets (weak) KonghaYao-peri-fcc3f6f/.claude/skills/langfuse/scripts/lib.ts :7
const SECRET_KEY = process.env.LANGFUSE_SECRET_KEY || ""; - secrets (weak) KonghaYao-peri-fcc3f6f/.claude/skills/ssh-cli/scripts/ssh-cli.js :90
if (process.env.SSH_CLI_STRICT_HOST_KEY) cfg.strict = process.env.SSH_CLI_STRICT_HOST_KEY; - secrets (weak) KonghaYao-peri-fcc3f6f/e2e/helpers/judge.test.ts :20
process.env.OPENAI_API_KEY = "test-key"; - secrets (weak) KonghaYao-peri-fcc3f6f/e2e/helpers/judge.ts :37
const apiKey = process.env.OPENAI_API_KEY; - secrets (weak) KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/test/dist-e2e.test.ts :39
source: "const { tmpdir } = await import('node:os'); console.log('e2e'); return { value: input.value, secret: process.env.PTC_TEST_SECRET ?? null, tmpdir: tmpdir() };", - secrets KonghaYao-peri-fcc3f6f/side-projects/daytona/src/commands/init.ts :31
apiKey = params.apiKey ?? process.env.DAYTONA_API_KEY ?? ""; - secrets KonghaYao-peri-fcc3f6f/side-projects/daytona/src/daytona-helpers.ts :109
apiKey: process.env.DAYTONA_API_KEY ?? "", - secrets KonghaYao-peri-fcc3f6f/side-projects/daytona/src/webhook.ts :8
const WEBHOOK_SECRET = process.env.GITHUB_WEBHOOK_SECRET;
tool registrations 2
- chat/send KonghaYao-peri-fcc3f6f/side-projects/mcp-apps/chat/server.ts :83
- chat/history KonghaYao-peri-fcc3f6f/side-projects/mcp-apps/chat/server.ts :96
install hooks 2
- prepublishOnly KonghaYao-peri-fcc3f6f/npm-packages/@peri-ptc/package.json :33
bun run build && bun run typecheck && bun test ./test && bun run check:dist && bun run pack:check && bun run pack:smoke - prepublishOnly KonghaYao-peri-fcc3f6f/npm-packages/@peri-workflow/package.json :24
npm run build && npm run test:coverage
declared dependencies 38
- dotenv@^17.4.2
- openai@^6.48.0
- tui-tester@file:./tui-tester
- @types/node@^26.1.1
- tsx@^4.23.1
- typescript@^7.0.2
- vitest@^4.1.10
- tokio@1
- tokio-util@0.7
- futures@0.3
- async-trait@0.1
- serde@1.0
show 26 more
- serde_json@1.0
- serde_yaml@0.9
- chrono@0.4
- anyhow@1.0
- thiserror@2.0
- tracing@0.1
- tracing-appender@0.2
- uuid@1
- parking_lot@0.12
- dirs-next@2
- url@2
- sqlx@0.9.0
- sysinfo@0.39
- lsp-types@0.97
- lru@0.18
- tempfile@3
- tikv-jemallocator@0.6
- tikv-jemalloc-ctl@0.6
- tikv-jemalloc-sys@0.6
- clap@4
- semver@1
- sha2@0.10
- axum@0.8.9
- portable-pty@0.9
- tokio-tungstenite@0.30
- serial_test@4.0.1