Package Exports
- @trymesh/cli/dist/local-tools.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@trymesh/cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Mesh is a terminal-first AI engineering agent built to prove its work, not perform it.
Most agents stop when they sound done. Mesh keeps going until the change is verified — it runs your build and tests, scopes its own edits, and bundles the proof. Zero config: it ships with a shared LLM gateway, so there are no API keys to wire up.
npm install -g @trymesh/cli
mesh login # opens a browser, hands the session back to your terminal
mesh # start an interactive sessionmesh login routes to Gemini 3.5 Flash through the shared Mesh gateway by default — no AWS/Google credentials needed. Requires Node 20+.
Why Mesh
- Proves its work. A convergence gate stops the model from spinning on read/search loops, an edit-scope guard blocks writes outside the task's directories (and never touches
.git/,node_modules/, build output), andmesh prturns a diff into a verifiable proof bundle. - Zero-config auth. One
mesh login, no keys. The shared gateway brokers every model call server-side. - Token-efficient. Tool-spec compaction and transcript capsules keep prompts lean — typically far fewer tokens than a raw LLM loop for the same task.
- Codebase-aware.
/indexbuilds a workspace index; ask architecture, bug, or ownership questions across the repo with semantic + keyword search. - Model-flexible. Swap between Gemini, Grok, GLM, Kimi, DeepSeek, Qwen, Llama and more with
/modelor--model <alias>— same session, same gateway.
Benchmarks
Head-to-head on a real multi-turn task (nextjs-full, 3 turns, Gemini 3.5 Flash) — Mesh vs a raw LLM loop on the same model and prompts. Both modes passed every turn; the difference is how many tokens reach the model and how long it takes.
nextjs-full · 3 turns · Gemini 3.5 Flash · identical pass outcomes
Input tokens sent to the model (lower is better)
Mesh ██████████ 27.4K
Raw ████████████████████████████████████ 94.6K −71%
Wall-clock time
Mesh ██████████████████████ 60.0s
Raw ████████████████████████████████████ 96.7s −38%Per-turn input tokens — the gap widens as the session grows and a raw transcript balloons, while Mesh keeps the prompt lean:
| Turn | Mesh | Raw | Reduction |
|---|---|---|---|
| 1 | 4.6K | 7.6K | −39% |
| 2 | 8.9K | 56.0K | −84% |
| 3 | 13.9K | 31.1K | −55% |
| Total | 27.4K | 94.6K | −71% |
Same answers, 71% fewer input tokens and 38% less wall-clock time. The savings come from tool-spec compaction and transcript capsules that trim the prompt instead of re-sending the whole history each turn. (Replay any time with mesh eval; raw figures use provider prompt-caching, so Mesh's true token savings are conservative here.)
Quickstart
mesh # interactive session
mesh "fix the failing auth test" # one-shot: run a single task and exit
mesh init # first-run setup + repo briefingInside a session, type /help to list every command.
Commands
| Command | What it does |
|---|---|
mesh |
Start an interactive session |
mesh "<task>" |
One-shot: run a single task, then exit |
mesh resume [--resume <id>] |
Resume a previous session |
mesh init |
First-run setup + repo briefing |
mesh login / mesh logout / mesh whoami |
Manage your session |
mesh doctor [fix] |
Diagnose the install; fix applies safe repairs |
mesh pr [--intent ...] |
Build a PR proof bundle from the working diff |
mesh live [--verify <cmd>] |
Foreground watcher that flags breakage (no LLM) |
mesh eval [--since <ISO>] |
Replay past turns and score pass/fail |
mesh daemon <start|status|digest|stop> |
Background daemon control |
mesh support |
Print debug info for bug reports |
Useful in-session commands (full list via /help):
| Command | What it does |
|---|---|
/model |
Switch model |
/plan |
Read-only "think first" mode — edits & commands disabled |
/index · /synthesize |
Build / refresh the workspace index |
/fix · /tribunal · /sheriff |
Verification & quality gates |
/undo |
Revert the last file change |
/cost · /compact · /memory |
Inspect tokens, compact context, manage memory |
/status · /dashboard |
Session info & live view |
/approvals |
Review/adjust tool-approval settings |
Models
Default is Gemini 3.5 Flash. Select any with --model <alias> or /model.
| Model | Alias | Notes |
|---|---|---|
| Gemini 3.5 Flash | default, 3.5-flash |
Newest fast GA — recommended default |
| Gemini 3.1 Pro Preview | 3.1-pro |
Top reasoning, slower |
| Gemini 2.5 Pro | pro |
Stable high-quality reasoning |
| Gemini 2.5 Flash-Lite | lite |
Cheapest — auto-routed for trivial turns |
| Grok 4.20 (Reasoning / Fast) | grok-reasoning / grok |
xAI |
| GLM 5 | glm |
Z.ai reasoning |
| Kimi K2.6 | kimi |
Moonshot deep reasoning |
| DeepSeek V4 Pro | deepseek |
Strong generalist |
| Qwen 3 Coder | qwen |
480B code specialist |
| Llama 4 Maverick | llama |
Meta MoE |
| GPT-OSS 120B | gpt-oss |
OpenAI open-weights |
If the primary model fails, Mesh falls back automatically (Gemini 2.5 Pro → Kimi K2.6).
How verification works
Mesh treats "done" as something to demonstrate, not assert:
- Convergence gate — if the model loops on read/search tools without making progress, Mesh nudges it to converge, and ultimately forces a concrete answer or edit instead of endless exploration.
- Edit-scope guard — edits are confined to the paths your task implies; writes to
.git/,node_modules/,.mesh/, and build directories are rejected outright. - Proof bundles —
mesh prpackages the diff with its verification result so a reviewer sees what changed and that it passed, not just a claim. - Live watcher —
mesh live --verify "<cmd>"runs your command on every change and flags regressions, no model in the loop.
Configuration
Most things work out of the box. Common knobs:
mesh --model pro "<task>" # pick a model for this run
mesh --classic # legacy scrollback UI
mesh --no-browser # password login instead of browser flow| Env var | Effect |
|---|---|
MESH_DEBUG=1 |
Verbose diagnostics (e.g. skipped MCP servers) |
MESH_SKIP_FIRST_INDEX=1 |
Skip the first-run workspace index |
Auth & privacy
mesh login opens a browser to a Mesh-hosted page — the CLI never sees your password. On success, your session (a Supabase JWT) is stored in your OS keychain (with a ~/.config/mesh file fallback) and refreshed automatically. Every model request goes through the shared Mesh gateway, which injects provider credentials server-side; your prompts and code context are sent to the selected model provider to generate responses. Run mesh logout to clear stored credentials.
Requirements
- Node.js 20+
- A Mesh account (free tier available) — created during
mesh login
Links
Contact
Questions, feedback, or partnership inquiries — reach the team:
- Edgar Baumann — edgar.baumann@try-mesh.com
- Philipp Horn — philipp.horn@try-mesh.com
License
See LICENSE.