Skip to main content

Local-first autonomous AI agent for programming and system automation. Runs against local models (Ollama, vLLM, LM Studio) or any OpenAI-compatible API (OpenRouter, OpenAI, Anthropic-compatible) with native tool calling, MCP support, plan mode, and skills.

Project description

exara-agent

PyPI Python License: MIT

Local-first autonomous AI agent for programming and system automation. Runs against local models (Ollama, vLLM, LM Studio, llama.cpp) or any OpenAI-compatible API (OpenRouter, OpenAI, DeepSeek, Anthropic, Groq) using native tool calling. Ships with a Rich CLI, a Next.js web UI, and MCP (Model Context Protocol) support so you can plug in GitHub, filesystem, Slack, Linear, Postgres, and the rest of the community catalog.

pip install exara-agent
exara init      # one-time interactive setup
exara chat      # talk to it from any folder

What it does

  • ReAct loop with native tool calling — no fragile JSON parsing, the model emits real function calls.
  • 30+ built-in tools — file ops, multi-edit, search, shell, background processes, Python execution, git, package install, web fetch, vision, audio, todos, plan mode, subagent delegation.
  • MCP client~/.ai-agent/mcp.json works the same as Claude Desktop / Cursor: drop in any server from the catalog and the tools appear in the agent. Multi-source merge: bundled defaults → user-global → per-workspace.
  • Skills system — markdown knowledge packs with auto-activation by stack (Python, Next.js, FastAPI, …). 10 ship out of the box; add your own at ~/.ai-agent/skills/ (global) or ./skills/ (per-project).
  • Multi-provider profilesexara profile use openrouter to swap. Keys live in ~/.ai-agent/profiles.json, never in the repo.
  • Three-tier permission modelsafe / normal / full, with a hard denylist for destructive commands (rm -rf /, mkfs.*, format c:, …) enforced at every level.
  • Streaming responses + per-tool diff previews — Claude Code-style UX.
  • Auto-context compaction — keeps long sessions inside the model's window without you noticing.
  • Hooks — shell commands fired on session_start, pre_tool_use, post_tool_use, etc. Same model as Claude Code.
  • Docker sandbox (optional) — route run_python and execute_terminal through a disposable container instead of your host shell.
  • Secret redactionOPENAI_API_KEY=…, GitHub PATs, AWS keys, Bearer tokens, and DB URLs are scrubbed from every tool output before they reach the model.

Install

pip install exara-agent

Or with pipx for global isolation (recommended):

pipx install exara-agent

One-liner installers (detect Python, install pipx if missing, run wizard):

# macOS / Linux
curl -sSL https://raw.githubusercontent.com/santirivera-oss/exara-agent/main/scripts/install.sh | bash
# Windows (PowerShell)
iwr https://raw.githubusercontent.com/santirivera-oss/exara-agent/main/scripts/install.ps1 | iex

First run

exara init

Interactive wizard. Picks a provider, asks for an API key, optionally enables MCP servers (filesystem / github / memory / sequential-thinking) and writes a starter skill at ~/.ai-agent/skills/my-preferences.md.

Sanity check

exara doctor       # provider reachable? tools loaded? memory writable?
exara skills list  # which skills are active in this cwd
exara mcp list     # which MCP servers + tools are wired up

Use it

# One-shot task
exara run "summarise the structure of this project"

# Interactive REPL
exara chat

# Web UI (after `npm install` in frontend/)
exara serve   # http://127.0.0.1:8765
cd frontend && npm run dev   # http://localhost:3100

Slash commands

/help     /tools    /sessions       /resume <id>
/model    /plan     /init           /compact
/stats    /todos    /ps             /clear

Providers

Anything OpenAI-compatible works out of the box. Built-in presets:

Preset Endpoint Default model
ollama-local http://localhost:11434 qwen2.5:7b-instruct
openrouter https://openrouter.ai/api/v1 deepseek/deepseek-chat
openai https://api.openai.com/v1 gpt-4o-mini
anthropic https://api.anthropic.com/v1 claude-haiku-4-5
deepseek https://api.deepseek.com/v1 deepseek-chat
groq https://api.groq.com/openai/v1 llama-3.3-70b-versatile
lm-studio http://localhost:1234/v1 (whatever you loaded)
exara profile presets       # show the catalog
exara profile add --from openrouter --use
exara profile use ollama-local

Permission levels

Level Reads Writes / shell / python Confirmation
safe yes denied n/a
normal yes allowed required on high-risk
full yes allowed skipped

Destructive command patterns (rm -rf /, mkfs.*, format c:, etc.) are blocked at every level via the bundled default_config.yaml.


Config layout

~/.ai-agent/
├── profiles.json        # provider keys (gitignored by design)
├── mcp.json             # global MCP servers
├── config.yaml          # optional global overrides
├── skills/              # global skills (always loaded)
│   └── my-preferences.md
├── data/agent.db        # conversation memory (SQLite)
└── logs/                # JSON logs

./                        # per-workspace overrides
├── .env                 # env vars (highest precedence)
├── config.yaml          # workspace-only overrides
├── mcp.json             # workspace MCP servers (merged on top of global)
└── skills/              # workspace skills (override globals by name)

Precedence (low → high): bundled defaults → ~/.ai-agent/config.yaml → workspace config.yaml → active profile → AI_AGENT_* env vars.


Architecture & docs


Develop

git clone https://github.com/santirivera-oss/exara-agent
cd exara-agent
python -m venv .venv
. .venv/Scripts/Activate.ps1     # PowerShell on Windows
# source .venv/bin/activate      # macOS / Linux
pip install -e ".[dev]"
pytest                           # backend tests

# Web UI
cd frontend
npm install
npm run dev                      # http://localhost:3100

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

exara_agent-0.1.1.tar.gz (131.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

exara_agent-0.1.1-py3-none-any.whl (134.8 kB view details)

Uploaded Python 3

File details

Details for the file exara_agent-0.1.1.tar.gz.

File metadata

  • Download URL: exara_agent-0.1.1.tar.gz
  • Upload date:
  • Size: 131.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for exara_agent-0.1.1.tar.gz
Algorithm Hash digest
SHA256 078df952d00c147c935680a515c4a172a20da9885a2a25a423022817ec41cb29
MD5 a658ceb65af9413f6f080dea55ce7cda
BLAKE2b-256 a56dd84624ade4ac7318c4c5fb48d6e139659099b2f775140061b312efcc11e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for exara_agent-0.1.1.tar.gz:

Publisher: publish.yml on santirivera-oss/exara-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file exara_agent-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: exara_agent-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 134.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for exara_agent-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6f106a6442fbe410e9a9b512e04c394257be20ad90954f63092774482844501c
MD5 29ffca7a513fe33bb197fe2b87d81db7
BLAKE2b-256 287f2cab36e2c3199ae3b406e54fdad6e28f36e50a590aaa609800ac31696115

See more details on using hashes here.

Provenance

The following attestation bundles were made for exara_agent-0.1.1-py3-none-any.whl:

Publisher: publish.yml on santirivera-oss/exara-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page