Skip to main content

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-tools to use tmux-backed sessions instead)

License

MIT

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

yaca-0.1.1a2-py3-none-any.whl (60.1 kB view details)

Uploaded Python 3

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

Hashes for yaca-0.1.1a2-py3-none-any.whl
Algorithm Hash digest
SHA256 b568690e27bf2aba2f0b2cdb36ebb8da3836b473ca775f41c88b783402764cb0
MD5 11119b11f972bfa320316e649169b899
BLAKE2b-256 71cf8570bf091c90defb060c8517d1422afa19e24d56997bba76154387671ee1

See more details on using hashes here.

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