Visual AId is a local desktop app for coding agents that need a better surface than plain terminal text.
An agent can launch the app over MCP, send a structured payload, and let the desktop UI render it in a form the user can actually inspect. The project is built around everyday agent workflows such as plans, code snippets, diffs, diagrams, JSON payloads, and lightweight HTML previews.
Visual AId gives agents a dedicated visual output window instead of forcing every artifact through a terminal transcript.
The current flow is:
- An MCP client calls
visual-aid.openorvisual-aid.show. - The MCP server writes workspace-scoped session state.
- The Tauri desktop app renders the latest payload for that workspace.
- MCP tool surface for
visual-aid.status,visual-aid.open,visual-aid.show, andvisual-aid.clear - Desktop rendering for
markdown,code,json,diff,mermaid, andhtml - Rich Markdown support including tables, fenced code blocks, embedded Mermaid, and embedded diffs
- Single-window multi-workspace tabs keyed by working directory
- Session persistence and last-known-good restore behavior
- Self-describing MCP metadata and readable MCP usage resources
- Source-checkout dogfood flow for local development
- Standalone MCP package source under
packages/visual-aid
Visual AId currently renders:
- Markdown
- Source code
- JSON
- Unified diff
- Mermaid
- HTML fragments and wireframes
There are two distinct ways to use this project:
- regular use: install the desktop app and point your MCP client at the standalone
visual-aidserver package - contributor use: run the app and MCP server directly from this repository checkout
For most users, the intended setup is:
- Install the desktop app from this repository’s GitHub Releases.
- Configure your MCP client to use the standalone
visual-aidMCP server.
Desktop app install:
- Open the latest release for this repository.
- Download the installer or app bundle for your platform.
- Install it using your platform’s normal flow.
Simpler MCP setup:
[mcp_servers.visual-aid]
command = "npx"
args = ["-y", "visual-aid"]Or, if the package is installed globally:
[mcp_servers.visual-aid]
command = "visual-aid"That is the simpler MCP setup this project is aiming for: no source checkout, no tsx path, and no repo-local wiring in the MCP config.
The repository already contains that standalone package source under packages/visual-aid. If npm publication is not available yet in your environment, use the contributor setup below.
If you are developing Visual AId itself or dogfooding from a source checkout:
git clone https://github.com/mantoni/visual-aid.git
cd visual-aid
npm install
npm startThen print the matching MCP config for that checkout:
npm start -- --print-codex-configExpected shape:
[mcp_servers.visual-aid]
command = "/absolute/path/to/visual-aid/node_modules/.bin/tsx"
args = ["/absolute/path/to/visual-aid/mcp/server.ts"]
env = { VISUAL_AID_PREFER_DEBUG_APP = "1" }That source-checkout config is the contributor dogfood path. It is not the simplest end-user setup.
For regular use:
- Install the desktop app from GitHub Releases.
- Configure your MCP client to run
visual-aid. - Call
visual-aid.status. - Call
visual-aid.open. - Call
visual-aid.showwith a payload.
For contributor use from this repository:
- Install dependencies with
npm install. - Start the desktop app with
npm start. - Print the matching Codex MCP config with
npm start -- --print-codex-config. - Add that block to your Codex
config.toml. - Call
visual-aid.status, thenvisual-aid.open, thenvisual-aid.show.
Use one of these two patterns:
- simpler MCP package setup:
[mcp_servers.visual-aid]
command = "npx"
args = ["-y", "visual-aid"]- source-checkout dogfood setup:
npm start -- --print-codex-configThe source-checkout config is generic:
- it points at this checkout’s MCP server entrypoint
- it does not pin a single workspace
- the active caller project gets its own
.visual-aid/session.json
If you need to run the source-checkout MCP server manually outside Codex, use:
env VISUAL_AID_SESSION_PATH=(pwd)/.visual-aid/dev-session.json npx tsx mcp/server.tsOnce the app and MCP server are available, the normal tool flow is:
visual-aid.statusto inspect workspace and session diagnosticsvisual-aid.opento launch or focus the desktop appvisual-aid.showto render a payloadvisual-aid.clearto clear the current workspace output
Example payload:
{
"version": 1,
"format": "markdown",
"title": "Plan",
"summary": "Current implementation plan",
"content": "# Plan\n\n- Inspect renderer\n- Add tests\n- Verify output"
}This section is for contributors working from the repository checkout.
Useful commands:
npm start: canonical local dogfood entrypointnpm start -- --print-codex-config: print the current checkout’s MCP confignpm run check: TypeScript type-checknpm test: run Vitestnpm run build: build the frontend bundlenpm run build:mcp-package: build the standalone MCP packagenpm run tauri:build: build desktop bundlesnpm run verify: run check, test, frontend build, and MCP package build
Important environment variables:
VISUAL_AID_SESSION_PATH: override the session file pathVISUAL_AID_WORKSPACE_CWD: override the workspace identityVISUAL_AID_REGISTRY_PATH: override the shared workspace registry pathVISUAL_AID_OPEN_COMMAND: explicit launch command forvisual-aid.openVISUAL_AID_APP_PATH: explicit app bundle or executable pathVISUAL_AID_PREFER_DEBUG_APP: prefer a local debug build when dev mode is liveVISUAL_AID_DEV_SERVER_URL: override the dev-server probe URL used for debug detection
src/: Vite renderer UIsrc-tauri/: Tauri host applicationpackages/visual-aid/: standalone MCP package sourcemcp/: compatibility wrappers for the repo-local MCP entrypointstests/: Vitest coveragedocs/: product, architecture, specs, and decision records
Start here for deeper detail:
docs/installation.md: installation paths and prerequisitesdocs/usage.md: payloads, tools, and normal usagedocs/dogfooding.md: canonical local workflowdocs/product.md: product intent and scopedocs/architecture.md: system shape and technical boundariesdocs/specs/README.md: behavior specsdocs/decisions/README.md: architectural decision records
Visual AId is actively evolving. The core MCP-to-desktop flow is working, the renderer set is already useful, and current work is focused on making installation, renderer quality, and everyday agent workflows easier to adopt.