Metadata-Version: 2.5
Name: elan-cli
Version: 0.1.0
Summary: The command line a developer deploys an agent with
Project-URL: Homepage, https://openelan.ai
Project-URL: Documentation, https://openelan.ai/app/docs
Author-email: Elan <support@openelan.ai>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: adk,agents,cli,deployment,llm
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.12
Requires-Dist: certifi>=2024.2.2
Requires-Dist: elan-agentkit-contracts
Requires-Dist: elan-sdk
Requires-Dist: httpx>=0.27
Requires-Dist: keyring>=25.0
Requires-Dist: websockets>=13.0
Description-Content-Type: text/markdown

# elan-cli

The command line a developer deploys an agent with. Installs the `elan`
command.

```bash
uv tool install elan-cli        # or: pipx install elan-cli
```

Requires Python 3.12 or newer.

## Getting started

```bash
elan login                      # device-code sign-in against the platform
elan init --tenant acme --project agents
elan env                        # build the project's venv
elan validate                   # say no here, where saying no is free
elan deploy
elan invoke invoice-triage --text "What do I owe on INV-9?"
```

`elan login` reaches the production API by default. Point it elsewhere with
`elan login --api https://…`, or set `ELAN_API`.

## What it covers

| Group | Commands |
|---|---|
| Signing in | `login`, `logout`, `whoami` |
| Project setup | `init`, `new {agent,workflow}`, `projects {ls,create}` |
| Local development | `env`, `adk`, `validate` |
| Shipping | `deploy`, `status`, `logs`, `rollback` |
| Operating | `agents`, `invoke`, `doctor`, `destroy` |
| Secrets | `secret {set,ls,rm}` |
| Files | `files {ls,get,put,rm}` |
| Wallets | `wallet {ls,show,create,credit,adjust,freeze,unfreeze,statement}` |

`elan <command> --help` for the flags.

## Where it keeps things

Configuration is a plain JSON file at `~/.config/elan/config.json`, mode
`0600`, holding only public values — the API URL, the issuer, the client id.
Override the directory with `ELAN_HOME`, or the API with `ELAN_API`.

**Credentials never go in a file.** The refresh token is stored in the OS
keyring under the service name `elan-cli`. The CLI will not fall back to
writing one to disk; if `keyring` cannot be reached it says so and stops.

Per-project state lives in `.elan/` beside your `elan.yaml`, and is
git-ignored.

## Exit codes

| | |
|---|---|
| `0` | it worked |
| `1` | it ran, and the answer was no — a refused deploy, a failed validation |
| `2` | it could not run — no project, no credential, no network |

Errors print as `error: …` on stderr with no traceback.

## Documentation

The full command reference and the platform guides are at
<https://openelan.ai/app/docs>.

## Licence

Apache-2.0. See `LICENSE`.
