Multi-provider LLM agent with an interactive REPL
Project description
yaca — Yet Another Crafty Agent
A multi-provider LLM agent with an interactive terminal REPL. Switch between Anthropic, OpenAI, Groq, Cerebras, and LM Studio mid-session; stream output; run tools; branch conversation threads.
Install
pip install yaca
# or
uv tool install yaca
Requires Python 3.14+.
Quick start
Create a yaca.yaml in your working directory:
defaults:
provider: anthropic/main
model: claude-sonnet-4-6
providers:
- type: anthropic
id: main
Store your API key (written to the OS keyring):
yaca
> /connect anthropic/main
Or export it as an environment variable:
export ANTHROPIC_API_KEY=sk-ant-...
Then run:
yaca
Configuration
yaca.yaml is read from the current working directory. The defaults block
sets the starting provider, model, effort level, and reasoning budget. The
providers list declares every provider available in the session.
defaults:
provider: anthropic/main
model: claude-sonnet-4-6
effort: low # off | low | medium | high
providers:
- type: anthropic
id: main
- type: openai_responses
id: openai
- type: groq
id: groq
- type: cerebras
id: cerebras
- type: lmstudio_chat
id: local
Providers
| Type | Backend | Auth env var |
|---|---|---|
anthropic |
Anthropic Messages API | ANTHROPIC_API_KEY |
openai_chat |
OpenAI Chat Completions | OPENAI_API_KEY |
openai_responses |
OpenAI Responses API | OPENAI_API_KEY |
groq |
Groq | GROQ_API_KEY |
cerebras |
Cerebras Cloud | CEREBRAS_API_KEY |
lmstudio_chat |
LM Studio (Chat) | — |
lmstudio_responses |
LM Studio (Responses) | — |
lmstudio_anthropic |
LM Studio (Anthropic) | — |
LM Studio providers connect to localhost:1234 and require no API key.
REPL commands
| Command | Description |
|---|---|
/model [name] |
Pick a provider and model interactively or by name |
/effort <level>[:<budget>] |
Set reasoning effort; off to disable |
/connect [type/id] |
Store an API key in the OS keyring |
/print |
Dump current thread as JSON |
/tools |
List registered tools with schemas |
/quit |
Exit |
Tools
yaca ships with tools for filesystem access and interactive shell sessions:
- ListFiles / ReadFile — list and read local files
- Editor sessions — open and interact with editor buffers
- Interactive sessions — spawn and drive terminal processes (pexpect by
default;
--tmux-toolsto use tmux-backed sessions instead)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yaca-0.1.1a2-py3-none-any.whl.
File metadata
- Download URL: yaca-0.1.1a2-py3-none-any.whl
- Upload date:
- Size: 60.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b568690e27bf2aba2f0b2cdb36ebb8da3836b473ca775f41c88b783402764cb0
|
|
| MD5 |
11119b11f972bfa320316e649169b899
|
|
| BLAKE2b-256 |
71cf8570bf091c90defb060c8517d1422afa19e24d56997bba76154387671ee1
|