Metadata-Version: 2.5
Name: caurad
Version: 0.10.2
Summary: uvx/pip wrapper for the Caura broker: downloads the platform binary from the public release mirror, SHA-256-verifies it, and execs it.
Project-URL: Homepage, https://caura.ai
License-Expression: Apache-2.0
Requires-Python: >=3.11
Description-Content-Type: text/markdown

# `caurad` — uvx / pip wrapper

Run the Caura broker from the Python ecosystem:

```bash
uvx caurad --help                        # package-name shorthand, kept working
uvx --from caurad caura --help           # run the canonical command directly
pipx install caurad && caura --help      # or install it
```

## Interaction with the native installer

The PyPI wrapper and the native installer both provide a `caura` executable. If
both are installed, your shell runs whichever appears first on `PATH`, and the
two installations can be different versions. Use `command -v caura` to see
which executable wins, `type -a caura` to list every match, and `caura version`
to identify the selected version.

## How it works

This package is a thin dispatcher — the broker itself is a single Go binary.

The currently published 0.10.1 package still exposes only `caurad`, and its
archive contains only the `memclaw` payload; this PR does not change that <!-- legacy-name-floor: published 0.10.1 payload -->
release. The additive entry point first ships with a later tagged package.

On first canonical or compatibility entry-point invocation,
`wrappers/uvx/caurad/cli.py` detects your
platform, downloads the matching signed archive from the public release mirror,
verifies its SHA-256 against the published `checksums.txt`, caches the binary
under `~/.cache/memclawd/<version>/`, and `os.execv`s it with your arguments. <!-- legacy-name-floor: published cache path -->
Release A archives cache the root `caura` payload; older archives fall back to
their root compatibility payload. The `caura` and `caurad` entries both invoke
the payload as `caura`, while the legacy `memclaw` entry point retains its <!-- legacy-name-floor: installed entry point -->
established invocation name.

The install itself does NOT prefetch the binary — the download happens on first
invocation. That keeps the package tiny and works under pipx / sandboxed
installs where postinstall hooks don't fire.

The binary is downloaded from the public release mirror
(`https://memclaw.net/memclaw/<tag>/`) — the same source the <!-- legacy-name-floor: published mirror path -->
`wrappers/curl/install.sh` installer uses, not this repo's GitHub Releases
(which are private). SHA-256 verification is the integrity gate.

## Environment overrides

Both are also read under their historical `MEMCLAW_*` spellings<!-- legacy-name-ok: rule 3 dual-read alias -->, which keep
working indefinitely; the `CAURA_*` name wins when it holds a non-empty value.

- `CAURA_BINARY_BASE` — base URL of a release mirror (default
  `https://memclaw.net/memclaw`). Point it at an on-prem gateway's <!-- legacy-name-floor: published mirror path -->
  `<origin>/memclaw` to install from a private deployment. <!-- legacy-name-floor: served mirror path -->
- `CAURA_VERSION` — pin a specific release tag instead of the installed
  package's version.

The published package version is set from the release tag by the PyPI-publish
workflow; the `0.0.0` in `pyproject.toml` is a placeholder for local checkouts.

## Compatibility name

Existing `pip install memclawd` and `uvx --from memclawd memclaw` commands keep working through <!-- legacy-name-ok: permanent PyPI compatibility alias -->
the separate compatibility package, which depends on `caurad`. New installation
instructions should use the `caura` command above.

Licensed under Apache-2.0, matching the `LICENSE` at the repository root.
