A toolkit to create local-first human-friendly agents in the browser or terminal
| Feature | Description |
|---|---|
| π§ Think | LLM inference via any OpenAI-compatible backend, first class Llama.cpp support |
| π§ Work | Execute tools recursively β actions, workflows, commands, agents |
| πΎ Remember | Semantic memory (LanceDB) + transient memory (IndexedDB/localForage) |
| π» Interact | Terminal REPL (lm), WebSocket client, or Koa server API |
- Composable β limited responsibilities, packages work together
- Declarative β focus on business logic, express features simply
- Explicit β simple and under user control, no hidden magic
π Documentation | π§© Plugins | π¨ UI
Get up and running in 3 steps:
npm i -g @agent-smith/clibackends:
default: "llamacpp"
llamacpp:
type: "llamacpp"
url: "http://localhost:8080/v1"
features:
- ~/my-agents/featureslm q "Say hello in three words"π See the full quickstart guide for detailed setup including plugins and custom agents.
Plugins extend the CLI with additional capabilities. Browse all plugins at agent-smith-plugins.
| Category | Plugin | Package | Description |
|---|---|---|---|
| π» Code Management | git | @agent-smith/feat-git |
AI-powered commit messages, diff analysis |
| sqlite | @agent-smith/feat-sqlite |
Database operations, schema extraction | |
| βοΈ System | fs | @agent-smith/feat-fs |
Filesystem read/write with path authorization |
| shell | @agent-smith/feat-shell |
Sandboxed Docker execution (shell + Python) | |
| π Web | search | @agent-smith/feat-search |
Multi-backend web search (DuckDuckGo, Wikipedia, crawl4ai) |
| video | @agent-smith/feat-video |
YouTube transcript extraction and chat | |
| π Docs | autodoc | @agent-smith/autodoc |
AI-powered documentation Q&A |
Install a plugin: npm i -g @agent-smith/feat-shell, then add it to your config.yml.
- SQLite-driven runtime: All configuration (backends, features, settings) lives in SQLite β zero hardcoded defaults
- Feature discovery: Agents, actions, workflows, and commands are YAML/JS files on disk, auto-discovered and registered
- MCP support: Connect to external Model Context Protocol servers and use their tools within agents
- Unified tool abstraction: Actions, agents, workflows, and commands are all
ToolSpecobjects β interchangeable in any context
# Simple inference query
lm q "Say hello in three words"
# Generate a commit message (git plugin)
lm commit
# Execute shell command via agent (shell plugin)
lm shell "ls -la"import { Agent, Lm } from "@agent-smith/agent";
const lm = new Lm({
name: "openai",
serverUrl: "http://localhost:8080/v1",
apiKey: "",
onToken: (t) => process.stdout.write(t),
});
const agent = new Agent({
name: "my-agent",
lm,
onToken: (t) => process.stdout.write(t),
});
await agent.run("Hello, how are you?", {
system: "You are a helpful assistant",
tools: [weatherTool, trafficTool],
});import { useWsServer } from "@agent-smith/wscli";
const ws = useWsServer({
url: "ws://localhost:5184/ws",
onToken: (t) => process.stdout.write(t),
});
await ws.connect();
await ws.executeAgent("my-agent", "Translate to German: Hello world");Supported inference backends:
- Llama.cpp: the first class citizen
- Any OpenAI-compatible API server (OpenAI, LM Studio, etc.)
| Repository | Description |
|---|---|
| agent-smith-plugins | Plugin extensions: git, sqlite, fs, shell, search, video, autodoc |
| agent-smith-ui | Web interface for Agent Smith |
Agents processing a real-world job, thinking, working, and adapting.

