A modular AI coding agent engine built on the Vercel AI SDK with file tools, virtual shell, Agent Skills, MCP support, and tool-approval gating. Runs across multiple platforms: Node.js, browser (IndexedDB), Cloudflare Workers, and serverless functions.
NanoCodana provides 10 tools with explicit schemas and descriptions. Most tools have clear verb-noun naming (Read, Write, Edit, Delete, Glob, Grep, LS, Bash, Skill) and documented input parameters with types. However, descriptions are inconsistent in depth, some are adequate (Read: 95 chars), others minimal (LS: 47 chars). Output schemas are not documented in the source provided, forcing LLMs to infer result structure. Error handling guidance is absent; tools do not indicate what to do on failure (e.g., file not found, permission denied). Parameter descriptions lack constraint details (e.g., Bash timeout units, Glob pattern syntax). The Skill tool's description is vague about what 'instructions' means. Overall, definitions are functional but lack the LLM-optimization depth (50 - 200 char descriptions, constraint clarity, error recovery guidance) expected of production-grade tools.
Executes bash commands in a virtual workspace (when virtualBash is enabled) or in a sandbox. Commands run against the same in-memory files used by other file tools. Background execution is not supported.
Deletes a file or directory.
Replaces text in a file. Finds oldText and replaces it with newText, optionally replacing all occurrences.
Finds files matching a glob pattern.
Searches for text patterns in files.
Lists directory contents with file metadata.
Applies multiple edits to a single file in one operation.
Reads file content with optional offset and line limit. Returns formatted output with line numbers.
Output schemas not documented. LLMs cannot infer what fields Read, Write, Glob, Grep, LS, and Bash return, forcing them to guess at result structure and downstream field names.
No error handling guidance. Tools do not indicate what to do on failure (file not found, permission denied, timeout, invalid regex). Agents cannot self-correct or retry intelligently.
Parameter descriptions lack constraint details. Bash timeout units unspecified; Glob pattern syntax not explained; Grep caseSensitive default behavior unclear; Edit replaceAll default not documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Loads a skill's full instructions on demand. Call this with a skill name to get authoritative, step-by-step guidance for that kind of task before doing it. Treat the returned instructions as authoritative.
Writes content to a file, creating it if it does not exist.
LS description is 47 characters, below the 50-char minimum for LLM clarity. Skill description vague: 'Loads a skill's full instructions' does not explain what a skill is or when to call it.
No pagination or result limits documented. Glob and Grep could return thousands of matches; LS could list huge directories. No guidance on max results or how to handle large result sets.