Metadata-Version: 2.4
Name: litesquad
Version: 0.0.1
Summary: Lightweight tool for working with a team of LLMs
Author: EricThomson
Author-email: EricThomson <thomson.eric@gmail.com>
License-Expression: Apache-2.0
License-File: LICENSE
Requires-Dist: litellm>=1.90.1
Requires-Dist: pydantic>=2.13.4
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: rich>=15.0.0
Requires-Dist: typer>=0.26.8
Requires-Dist: dash>=3.0,<4.2 ; extra == 'web'
Requires-Python: >=3.12
Project-URL: Repository, https://github.com/EricThomson/litesquad
Provides-Extra: web
Description-Content-Type: text/markdown

# lite squad
Tool for working with a team of LLMs. Sometimes two, or five, heads are better than one.

## Usage
Install with pip:

    pip install litesquad

Use in browser: 

    litesquad --web 

Use at command line:

    litesquad "plan such and such project"
    litesquad "such and such" --quick # get a quick answer, bypassing the squad

litesquad takes a few minutes to run when not in deep think mode. There's a lot of LLM calls going on under the hood (see below). 

Query is distributed to worker LLMs (gemini and sonnet direct, plus deepseek, mistral, and llama via OpenRouter). Another (grok) acts as a critic that gives feedback to the workers. They revise their response. An intermediate representation of these responses is extracted to pull the content and clustered into categories of suggestions (gpt5). A judge (opus) converts these suggestions into a final coherent answer for the user. 

To run the default, you will need API keys for [Gemini](https://aistudio.google.com/app/apikey), [OpenAI](https://openai.com/index/openai-api/), [Anthropic](https://platform.claude.com/docs/en/api/admin/api_keys/retrieve), and [OpenRouter](https://openrouter.ai/keys). One OpenRouter key reaches the whole openrouter.ai catalog (deepseek, mistral, llama, grok, qwen, ...), which is how the worker roster grows wide without a key per provider. You can store your API keys in `.env`.

### Basic tests
To see if api keys are working (from activated env):  `python -m litesquad.check_keys`

Check on specific models: `litesquad --check` 

Offline test: `litesquad --smoke --mock`


### Caveats
This provides an interface to an ensemble of LLMs to try to generate a better answer than when using a single LLM. No agentic tool-usage, such as web calls, from the LLMs. Just vanilla text processing.

With apologies to [squad](https://github.com/bradygaster/squad). 

