Adam: An Embeddable Cross-Platform AI Agent Library in C

Adam is an embeddable AI agent library written in C. It offers a full agent loop — tool calling, memory, sessions, voice, streaming, structured output — as a single #include. It supports cloud APIs (Anthropic, OpenAI, Google Gemini, Groq, Together, xAI) and local models via llama.cpp through the same interface. Compiles on macOS, Linux, Windows, iOS, Android, and WASM.
Quick Start
#include "adam.h"
int main(void) {
adam_init();
adam_settings_t *s = adam_create_settings();
adam_settings_set_provider(s, ADAM_API_ANTHROPIC, getenv("ANTHROPIC_API_KEY"), "claude-sonnet-4-20250514");
adam_history_t *h = adam_history_create();
adam_run_result_t r = adam_run(s, h, "What is the capital of France?");
printf("%s\n", r.final_response); // "The capital of France is Paris."
adam_run_result_free(&r);
adam_history_destroy(h);
adam_settings_destroy(s);
adam_cleanup();
}
make deps # build llama.cpp + whisper.cpp
make all # build libadam.a
make test # run 161 tests (ASan + UBSan)
Key Features
- Agent loop – tool calling with automatic iteration until final response
- Three providers – Anthropic, OpenAI, Google Gemini + any compatible API + local GGUF via llama.cpp
- Local vision – multimodal image understanding via llama.cpp + mmproj (Gemma 3, LLaVA, etc.)
- Image generation – native image output via Gemini image models
- Database extensions – SQLite and PostgreSQL extensions that embed Adam as SQL functions
- 13 built-in tools – file I/O, shell, calculator, SQL, web fetch/search, HTTP POST, memory, research, multi-agent
- Long-term memory – hybrid BM25 + vector search via SQLite (sqlite-memory + sqlite-vector)
- Session persistence – save/load conversations with UUIDv7 keys
- Telegram bot – full-featured with text, voice, images, tools, and memory
- Voice – STT (Whisper cloud/local) + TTS (cloud/system) + full audio pipeline
- Streaming – real-time token delivery via callback
- Structured output –
adam_run_json()with validation and retry - Evolution loop – self-improving agent: iterate, score, refine strategy
- Research mode – autonomous multi-iteration info gathering with report synthesis
- Multi-agent – Agent A invokes Agent B as a tool, with independent settings/tools
- Guardrails – pre-send and post-receive validation callbacks
- Response cache – LRU hash table keyed on model + message history
- History management – clone, summarize (LLM-based compression), token estimation
- Thread pool – concurrent agent execution with job queue
- Filesystem sandbox – tools restricted to explicitly allowed directories
- Arena allocator – zero-leak per-iteration memory with automatic cleanup
Build Targets
make deps # Build llama.cpp, whisper.cpp (+ mbedtls/curl on Linux)
make all # Build libadam.a
make test # Build & run unit tests (ASan + UBSan)
make chat # Interactive text chat (cloud API)
make chat GGUF=models/model.gguf # Interactive text chat (local)
make vision GGUF=models/model.gguf MMPROJ=models/mmproj.gguf # Local vision test
make talk # Voice agent (cloud)
make talk LOCAL=1 # Voice agent (fully local)
make memory # Memory system tests
make clean # Remove all build artifacts
Full API documentation is available in API.md with every function, type, and callback.
📖 Read the full source: HN AI Agents
👀 See Also

VT Code: Open-Source Rust TUI Coding Agent with Multi-Provider Support and Agent Skills
VT Code is a Rust-based terminal UI (TUI) coding agent supporting Anthropic, OpenAI, Gemini, and Codex, with local inference via LM Studio and Ollama. It includes Agent Skills, Model Context Protocol, and Agent Client Protocol.

DELIGHT: Local Orchestrator Uses Multiple ChatGPT Sessions as Coordinated Agents
DELIGHT is a local orchestrator that runs multiple hidden ChatGPT browser sessions simultaneously, coordinating them like a team of agents without requiring API keys or GPU resources. It connects to OpenClaw as an action layer to apply changes to real files and run tests.

AskFirst API adds human approval layer for AI agents
AskFirst is a REST API that lets AI agents pause for human approval before taking irreversible actions. It works with local models, hosted APIs, and any framework, providing email notifications, approve/deny options, and audit logs.

Local voice-to-text transcription for OpenClaw using Parakeet TDT 0.6b v3
A developer has converted NVIDIA's Parakeet TDT 0.6b v3 model to run locally via ONNX on CPU, supporting 25 European languages. The model provides an OpenAI-compatible API endpoint through a Docker container, allowing integration with OpenClaw for audio file transcription.