Metadata-Version: 2.4
Name: crowe-argo
Version: 0.1.3
Summary: Argo Hub. A multi-agent system on the Crowe Logic engine.
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: crowe-logic>=0.8.2

# Argo Hub

A multi-agent CLI on the Crowe Logic engine. Installed as `crowe-argo`, run as `argo`.

```
pip install crowe-argo
argo login
argo
```

## What you get

Four agents, each on a deployment sized for what it does:

| Agent | Model | Why that one |
| --- | --- | --- |
| `argo_planner` | claude-opus-5 | One high-value call per run. Small capacity, so plan with it, do not fan out on it. |
| `argo_coder` | gpt-5.5 | The widest tier on the account, which is what the highest-volume agent needs. |
| `argo_reviewer` | gpt-5.6-sol | Frontier reasoning with real headroom. Review is bursty. |
| `argo_researcher` | gpt-5.5 | The widest tier on the account. Research dominates a fan-out. |

`argo models` lists the full roster. `crowelm-deepparallel` is also available: a
GLM-5.2 and Kimi-K2.7-code fusion synthesized by DeepSeek-V4-Pro. It is capped
at 20 requests per minute account-wide, so treat it as a planner or specialist
route, never a bulk carrier.

## Your own agents

Drop a YAML file next to the shipped ones:

```yaml
name: my_agent
description: "What it does"
model: gpt-5.6-luna
tools:
  - read_file
  - grep_search
prompt_override: |
  Your instructions.
```

A file whose `name` matches a builtin replaces that builtin, so you can retune a
shipped agent without forking anything.

## Brand

The accent is derived, not chosen: `tools/derive_brand.py` optimises for
maximum perceptual distance from every colour the stack already uses, under
normal vision and three colour-vision deficiencies. The mark is Canopus over
the keel of Argo Navis. Sources, exports and the reasoning are in `brand/`;
`brand/export/argo-brand-card.png` is the one-page sheet. On iTerm2-class
terminals the mark renders above the wordmark and beside every answer; on the
rest, the `✦` glyph does. Send a brand and they become yours instead.

---

## For maintainers: adding the next customer

This package is about forty lines. All behavior lives in the `crowe-logic`
engine it depends on, so engine fixes arrive with a version bump rather than a
port. To add a customer, copy this layout and change the profile.

**The one rule that will bite you.** `cli.branding` resolves its entire palette
into module-level constants at import time. A profile activated after that
import themes nothing and raises nothing, so the customer gets Crowe Logic's
gold under their own name and no error anywhere.

That is why `__init__.py` imports the engine *inside* `main()`:

```python
def main():
    from cli.profile import activate
    activate(ARGO)                      # first
    from cli.crowe_logic import main as engine_main   # second
    return engine_main()
```

At module scope, merely importing the package could pull in `cli.branding`
first. `activate()` raises `ProfileActivationError` if the order is ever broken,
and `tests/test_wheel.py` pins it in a subprocess, because import state is
process-global and an in-process test would only prove something about test
ordering.

**`model_roster` is display only.** It fills the models listing and completion.
Entitlement is enforced at the gateway against the bearer token, because a
roster in an installed Python file is bypassed by editing that file. Do not grow
it into access control; it cannot be one.
