Features

Everything an agent needs. Nothing it doesn't.

LambAI keeps the surface small and the behaviour legible, so you can trust what it does and understand why. Here's the whole story.

built-in tools
27
third-party deps
0
tool rounds / turn
10
small V modules
3
🔌

OpenAI-compatible

Point it at Ollama, OpenAI, OpenRouter, or any endpoint exposing /v1/chat/completions. Register several and pick one at startup.

🧰

Real function calling

Tools declared with JSON-schema parameters and returned as structured tool_calls, chained for up to 10 rounds per turn.

📁

Full filesystem toolset

Read with offset/limit, write, edit, grep, glob, tree, git, build/test, todos, memory, and web_fetch — all size-capped.

📖

Readable by design

A reference implementation of an agent loop in a few small V modules. No frameworks, no magic — read it in an afternoon.

🪶

Zero dependencies

V standard library plus curl. No node_modules, no lockfile archaeology, no supply-chain surprises.

🛡️

Safe by default

Agent profiles with tool allowlists, a write policy with confirmation, and protected paths the agent can never touch.

↩️

Snapshot & undo

Every edit is snapshotted first. Restore any file to its previous state with fs_restore, or browse the history with the snapshots tool.

💾

Sessions you can resume

Transcripts are plain JSONL under .lambai/sessions. List, resume, or export any of them — no database, no lock-in.

⏱️

Budgets that hold

Tool output is capped in bytes, the agent loop is capped in rounds, and the shell runs with a cleared environment. Nothing runs away.

By omission

What you won't find.

The fastest code to reason about is the code that isn't there. LambAI deliberately leaves a few things out.

  • ✕ No frameworks No LangChain, no orchestration layer — just a loop.
  • ✕ No daemon Run it, use it, quit it. Nothing lingers in the background.
  • ✕ No telemetry Nothing phones home. Web access is an explicit allowlist.
  • ✕ No lock-in Sessions and config are plain files you own and can export.