lnwjud
BLOCKgrade F · trust 48/100lnwjud — local AI-agent runtime & MCP gateway
ai agentsai toolsautomationchatgptclaudecodexdesktop automationdeveloper toolsOverview
From the repository's own README, as read at the audited commit.
<p align="center"> <img src="assets/logo/logo-256x256.png" width="160" alt="lnwjud logo" /></p><h1 align="center">lnwjud</h1><p align="center"> <strong>Cross-platform local AI-agent runtime and MCP gateway</strong><br /> <em>253 total tool definitions for local files, Git, processes, Windows automation, WSL, browser control, durable goal continuation, context capsules, indexing, observability, ECC integration, and extensibility; 241 are advertised by default and all 253 when Codex delegation plus Agent Swarm is enabled.</em></p><p align="center"> <em>อ่านที่เหลือใน Readme ได้เลยครับ ติดปัญหาทักมาได้ใน <a href="https://url.in.th/rEZiG"><strong>Line</strong></a> ได้ตลอดครับ / กําลังพัฒนาให้เรื่อยๆครับ ท่านที่ถามหาช่องสนับสนุนค่ากาแฟ แปะลิงก์ไว้ให้แล้วครับ ขอบคุณครับ — <a href="https://easydonate.app/abcz"><strong>Donate</strong></a></em></p><p align="center"> <a href="https://github.com/engasnm111/lnwjud/releases/latest"><img alt="GitHub Release" src="https://img.shields.io/github/v/release/engasnm111/lnwjud" /></a> <a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/license-MIT-blue.svg" /></a> <img alt="Platform" src="https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-0078D4" /> <img alt="Node" src="https://img.shields.io/badge/Node.js-24.x-339933" /> <img alt="MCP" src="https://img.shields.io/badge/MCP-253%20tools-6f42c1" /></p><h2 align="center">Download lnwjud</h2><p align="center">Choose your platform and download the current v5.2.0 release directly.</p><table align="center"> <tr> <td align="center" width="33%"> <a href="https://github.com/engasnm111/lnwjud/releases/latest/download/lnwjud-Setup-5.2.0.exe"> <img src="assets/download/download-windows.svg" width="300" alt="Download lnwjud for Windows" /> </a><br /> <sub><a href="https://github.com/engasnm111/lnwjud/releases/latest/download/lnwjud-Portable-5.2.0.exe">Portable x64</a></sub> </td> <td align="center" width="33%"> <a
Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add fixture-node-vite --env APPLE_API_KEY=${APPLE_API_KEY} --env CONTROL_PLANE_API_KEY=${CONTROL_PLANE_API_KEY} --env LNWJUD_CHECKPOINT_KEY_BASE64=${LNWJUD_CHECKPOINT_KEY_BASE64} --env LNWJUD_E2E_EPHEMERAL_SECRETS=${LNWJUD_E2E_EPHEMERAL_SECRETS} -- npx -y [email protected]{
"mcpServers": {
"fixture-node-vite": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"APPLE_API_KEY": "${APPLE_API_KEY}",
"CONTROL_PLANE_API_KEY": "${CONTROL_PLANE_API_KEY}",
"LNWJUD_CHECKPOINT_KEY_BASE64": "${LNWJUD_CHECKPOINT_KEY_BASE64}",
"LNWJUD_E2E_EPHEMERAL_SECRETS": "${LNWJUD_E2E_EPHEMERAL_SECRETS}"
}
}
}
}Exposed tools (84) 65 read · 17 write · 2 destructive
Blast radius: 2 tools can delete or overwrite. An agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
README | read | Project docs |
Smoke | read | Smoke |
accessibility | read | Accessibility |
advance_goal_iteration | read | Advance one bounded review/improvement iteration under the durable goal lease. It never sends browser messages or creates an autonomous ChatGPT UI loop and cannot exceed maxIterations. |
b | read | d |
clipboard | write | Read or write the host clipboard (text or PNG image as base64). Use get_text/get_image to read and set_text to write. |
codex_run | write | Delegate an instruction to the local Codex CLI in the Active Project. Starting Codex requires explicit chat confirmation and host approval in standard mode; trusted Full Bypass skips those lnwjud application checks without forging userConfirmed. |
codex_status | read | Report local Codex installation and capabilities without credential inspection. |
codex_stop | write | Stop an owned Codex task process after explicit chat confirmation in standard mode. Trusted Full Bypass skips the lnwjud confirmation gate; task ownership still applies. |
codex_task_list | read | List local Codex task handles owned by this client, including launches whose response was cancelled. |
codex_task_logs | read | Read bounded logs for an owned Codex task. |
codex_task_status | read | Read status for an owned Codex task. |
context_pressure | read | Estimate local durable-context pressure from the goal snapshot and latest capsule. This never claims exact ChatGPT/provider context usage when the host does not expose it. |
copy_file | read | Copy a file or directory within one workspace, creating missing destination parents. |
create_context_capsule | write | Create and publish a bounded immutable context capsule from authoritative durable goal state for compact/resume or handoff. Stores decisions/results, not private chain-of-thought, and never opens, clicks, types into, or creates a ChatGPT browser conversation. |
delete_file | destructive | delete |
demo | read | First line Second line |
dom_cdp | read | Browser |
file_dialog | write | Open a host-native file open/save dialog and return the chosen path(s). The dialog does not read or write files itself; use the guarded file tools afterwards. |
get_context_capsule | read | Read one immutable durable context capsule by ID. |
get_goal | read | Read the latest durable goal snapshot without changing state or returning a lease token. |
get_goal_plan | read | Read the user-facing plan projection, acceptance criteria, intent revision, and bounded-iteration policy from authoritative durable goal state. This is a projection, not a second workflow engine. |
git_diff | read | Return a bounded read-only Git diff. For writes use the git tool. |
git_log | read | Return bounded structured Git history. For writes use the git tool. |
git_status | write | Inspect parsed read-only Git status. For writes (init, add, commit, remote, push, rm, clean, reset) use the git tool. |
hang | read | Hang tool |
health | read | Health |
health_check | read | Health |
input_event | read | Input |
list_checkpoints | write | List encrypted pre-mutation checkpoints for one workspace without returning saved file content. |
list_context_capsules | read | List bounded context-capsule lineage for one durable goal. |
list_delivery_receipts | read | List bounded durable dispatch receipts for a goal. |
list_goals | write | List a bounded set of durable goals owned by the current stable MCP client, optionally filtered by workspace/status. |
list_recovery_items | read | List trusted Recovery Trash entries for one workspace, including deleted items, binary pre-replacement backups, original paths, timestamps, payload availability, and the local Recovery Trash root. |
mcp_describe | read | Connect to one local MCP server (if needed) and return its tool names, descriptions, and input schemas. This operation only inspects the child tool catalog. |
mcp_list | read | List local MCP servers discovered from Cursor, Claude Desktop, and lnwjud settings. This inspection is read-only and does not flatten child tools into the lnwjud catalog. |
notification | read | Show a host-native desktop notification when a notification session is available. Use to tell the user when a long task finishes. |
ping | read | Ping tool |
ponytail | read | bundled primary |
ponytail-review | read | bundled review |
process_list | read | List managed process handles owned by this client in a workspace, including launches whose response was cancelled. |
process_logs | read | Read bounded logs for an owned process handle. Prefer one bounded log read after meaningful progress rather than repeated status polling. |
process_status | read | Read one status snapshot for an owned process handle. Do not tight-poll this tool; use project_* for normal project verification, or shell background + durable task_id for work expected to exceed ~5 minutes. |
process_stop | write | Stop an owned managed process tree after explicit chat confirmation in standard mode. Trusted Full Bypass skips the lnwjud confirmation gate; exact process ownership still applies. |
project_snapshot | read | Return a bounded project snapshot without source contents. |
read_file | read | Read a workspace file as UTF-8 text or as an image/binary payload. Absolute host paths do not require workspaceId. For large files or an unknown location, prefer search_text first and then read_file_page for the relevant range instead of reading the whole file. |
read_file_page | read | page |
read_file_page_continue | read | Continue read_file_page from the next deterministic line chunk only when more surrounding context is needed; avoid re-reading earlier pages. |
read_files | read | Read up to twenty bounded workspace files in parallel. Absolute paths do not require workspaceId. For large files, locate text with search_text and page with read_file_page instead of loading entire files. |
read_many_files | read | Read many workspace files in parallel while preserving one result or error per requested path. |
reconcile_goals | write | Preview or apply exact durable-goal reconciliation after runtime liveness checks. |
record_delivery_receipt | read | Record or advance a durable dispatch receipt with explicit ambiguous-delivery states. Blind retries are rejected by lifecycle/state and newer user intent can retire stale deliveries. |
remote_read | read | Read remote data |
restore_checkpoint | read | Restore a reviewed pre-mutation checkpoint. Standard mode requires explicit confirmation; trusted Full Bypass skips the lnwjud confirmation gate. A new rollback checkpoint is created before replacing current content when the target is inside a recoverable workspace. |
revise_goal_intent | read | Record accepted newer user steering by incrementing userIntentRevision under the current lease. Older pending delivery receipts are retired so stale generated actions cannot outrank newer user instructions. |
schema_error_demo | read | output schema error fixture |
search_all | read | Search text and filenames across one or all registered workspaces with automatic economy filters or an explicit includeIgnored override. |
search_files | write | Search workspace filenames with automatic context-economy filters; set includeIgnored for an explicit full path search. Absolute path does not require workspaceId. |
shell | read | Shell |
skills_list | read | List the union of bundled skills and every discovered machine-global or active-workspace skill from Cursor, Claude, Agents, Codex, the Codex plugin cache, GitHub workspace roots, and lnwjud settings. Nested and symlinked skill collections are included. Filter with query or source. |
system_info | read | Read-only system information: OS, CPU, memory, disks, battery, uptime, and top processes by memory. Use for environment checks and diagnostics. |
tool_batch | write | Execute multiple MCP tools with parallel, dependency-aware, timeout, cancellation, and partial-result handling. |
ui_target_action | read | Act on one mark from a current vision_annotated_capture observation. The observation ID, optional hash, TTL, workspace owner, and current Accessibility element are checked before the action is sent. |
update_goal_acceptance | write | Update explicit durable acceptance criteria with evidence. finish_goal(status=completed) remains blocked until every criterion is completed. |
update_goal_plan | write | Atomically replace the user-facing durable goal plan through the current lease and revision fence. It only updates plan state; it does not execute plan steps by itself. |
validate | read | Validate fixture |
vision | read | Vision |
vision_annotated_capture | write | Capture a local host screen/region/window and return a short-lived Set-of-Marks observation with numbered bounds, a content hash, and an annotated PNG when the host capture provider is ready. This tool only observes; use ui_target_action for a separately gated action. |
web_fetch | destructive | Fetch an http/https URL (GET/POST/PUT/DELETE/HEAD) with bounded size and timeout. In standard mode every POST, PUT, or DELETE requires explicit chat confirmation and host approval; trusted Full Bypass skips lnwjud approval. dry_run remains safe. Returns status, headers, and text or base64 body. |
window | read | Window |
workspace_context | read | Aggregate ranked workspace context with snippets, symbols, Git/test relevance, economy metadata, and continuation; automatic discovery can be explicitly expanded. |
workspace_context_continue | read | Continue a workspace_context result without discarding unreturned candidates. |
workspace_full_scan | write | Enumerate workspace files with full access by default; set includeIgnored false to use the persistent automatic index. |
workspace_full_scan_continue | read | Continue a workspace_full_scan result page. |
workspace_index | read | Build or refresh the persistent workspace index using automatic context filters unless ignored paths are explicitly included. |
workspace_index_status | read | Return persistent index metadata and lossless watcher queue telemetry. |
workspace_index_stop | write | Stop a workspace watcher after draining all queued path updates. |
workspace_index_watch | read | Watch all workspace paths and incrementally re-index only changed paths with configurable debounce/concurrency. |
workspace_info | read | Return the configured workspace summary. |
workspace_list | read | List registered project workspaces available to lnwjud. Legacy explicitly registered drive roots may also appear as kind=machine_root. |
workspace_register | read | Register an existing project directory by absolute path. parentWorkspaceId is optional and retained only for legacy machine-root-relative registration. Idempotent for the same path. |
workspace_snapshot | read | Return workspace identity and project snapshot metadata without source contents. |
workspace_tree | read | List a bounded workspace tree. Absolute path does not require workspaceId. |
wsl_fs | read | Translate paths and inspect metadata between a registered Windows workspace and WSL without exposing raw \\\\wsl$ read/write access. |
Details
- Source
- engasnm111/lnwjud
- npm
fixture-node-vite@1.1.1- Transports
- stdio · streamable-http
- Credentials it reads
APPLE_API_KEYCONTROL_PLANE_API_KEYLNWJUD_CHECKPOINT_KEY_BASE64LNWJUD_E2E_EPHEMERAL_SECRETSLNWJUD_STDIO_FULL_BYPASS_ALLLNWJUD_TEST_WINDOWS_SECRET_MIGRATORLNWJUD_WINDOWS_SECRET_MIGRATOR- License
- MIT
- Stars
- 166 · pushed 0d ago
Trust audit
Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
if (['id_rsa', 'id_ed25519', 'credentials', 'credentials.json', 'secrets.json', 'service-account.json'].includes(basename)) return true;
const PRIVATE_KEY_PREFIXES = ['id_rsa', 'id_ed25519'];
($normalized -match '(^|/)(.+\.(pem|key)|id_rsa.*|id_ed25519.*|\.ssh/.*|\.aws/.*|credentials\.json)$')
import { appendFileSync, closeSync, mkdirSync, openSync, readFileSync, readSync, statSync, writeFileSync } from 'node:fs';import type { UiLocale, UpdateStatus } from '@lnwjud/ipc-contracts';const secret = 'sk-fixture-raw-secret-must-not-render';
' api_key: "sk-plaintext-must-not-remain"',
api_key: 'literal-must-not-remain',
password: 'super-secret-password',
nested: { apiKey: 'super-secret-api-key', a: 1 },await expect(vault.save({ workspaceRoot, scope: 'project', title: 'credential', body: 'ghp_123456789012345678901234567890' }))delete_file, web_fetch
await exec(powershell, ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-File', path.join(repositoryRoot, 'scripts/build-windows-secret-migrator.ps1')], { windowsHide: true, timeout: pconst fixture = await exec(powershell, ['-NoProfile', '-NonInteractive', '-Command',
const gitBlobSha = createHash('sha1').update(`blob ${content.byteLength}\0`).update(content).digest('hex');it.each(['.env', '.env.local', 'server.pem', 'private.key', 'id_ed25519', '.ssh\\id_ed25519', '.aws\\credentials', 'credentials.json'])('denies %s', (relativePath) => {const sourceHelper = path.join(desktopRoot, '../../native/windows-secret-migrator/bin/win-x64/lnwjud-windows-secret-migrator.exe');
await promisify(execFile)(powershell, ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-File', path.join(desktopRoot, '../../scripts/build-windows-secret-migrator.ps1')], { windowsHideLNWJUD_WINDOWS_SECRET_MIGRATOR: path.join(desktopRoot, '../../native/windows-secret-migrator/bin/win-x64/lnwjud-windows-secret-migrator.exe'),
- from: ../../.agents/skills/lnwjud-scheduled-continuation
- from: ../../.agents/skills/ponytail
- Adds **Remote MCP via ngrok + OAuth** as the recommended easy ChatGPT connection path: lnwjud keeps its local Streamable HTTP MCP on loopback (normally `http://127.0.0.1:18765/mcp`), runs a separate
| Local MCP client / dashboard diagnostics | Loopback Streamable HTTP | lnwjud Desktop | Defaults to `http://127.0.0.1:18765/mcp`; actual URL is shown in the UI |
5. **Member connection:** open the published custom lnwjud app in ChatGPT and press **Connect**. For the exact supported ChatGPT OAuth callback paths, the browser is handed once to a random short-live
The public ngrok URL is not the raw loopback MCP endpoint: requests must pass OAuth and bearer-token validation at the separate gateway. Do not publish `http://127.0.0.1:<port>/mcp` directly through a
Gates applied: no_behavioural_pass.
Audited 2026-09-17 · audit v0.4.0 · source sha b218af0638c4 · full audit: observations/trust-audit/mcp-server/engasnm111__lnwjud.json · Report an issue or request a re-scan
Audit history
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-17 | b218af0638c4 | BLOCK | F | 48 | first audit |
Alternatives
Other servers in the same categories, safer ones first.
Questions
What is the lnwjud MCP server?
lnwjud — local AI-agent runtime & MCP gateway
What tools does lnwjud expose?
84 in total: 65 read-only, 17 that write, and 2 that can delete or overwrite (delete_file, web_fetch). Every one is listed on this page with its risk.
Is lnwjud safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (48/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does lnwjud need?
It reads APPLE_API_KEY, CONTROL_PLANE_API_KEY, LNWJUD_CHECKPOINT_KEY_BASE64, LNWJUD_E2E_EPHEMERAL_SECRETS, LNWJUD_STDIO_FULL_BYPASS_ALL, LNWJUD_TEST_WINDOWS_SECRET_MIGRATOR and LNWJUD_WINDOWS_SECRET_MIGRATOR from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does lnwjud run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as fixture-node-vite at 1.1.1.
How current is this page?
The grade is for one exact copy of the source (b218af0638c4), read on 2026-09-17. The repository is watched and re-audited when it changes.
Provenance: OBSERVED · read 2026-09-17 · job trust-audit-2026-09-17