Astra — a terminal AI assistant that understands natural language and drives your dev tools.
Project description
Astra CLI
A terminal-based AI assistant that understands natural language and drives your developer tools — git, docker, kubernetes, code, and more — through a multi-agent LangGraph pipeline with local memory and RAG.
All 18 build phases are complete. See docs/ARCHITECTURE.md for the full design and HANDOFF.md for exactly what's done and what's left (mostly external setup — PyPI trusted publishing, a working LangSmith key, a local k8s cluster).
Install
Once published, install with:
pip install astra-cli-agent # or: uv tool install astra-cli-agent
This installs the astra command on your PATH — the PyPI distribution name
(astra-cli-agent) is different from the command you actually run.
Install (development)
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
or with plain pip:
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Getting started
Astra needs at least one LLM provider before it can answer anything. The first time you
run a command that needs one (astra ask, astra "<prompt>", astra chat) with none
configured, it offers to walk you through setup right there — same as most terminal AI
tools do on first run. You can also trigger it directly:
astra setup
This walks you through picking a provider (Groq, Anthropic, OpenAI, or a local Ollama
server), pastes-and-tests your API key with one real, cheap request before saving it, and
writes it to ~/.astra/.env — never logged, never committed. Run it again any time to
add more providers (recommended, so FallbackRouter has something to fall back to).
astra hello # sanity check: confirms install + config + whether a provider is set up
astra version # print installed version
astra ask "..." # one-shot LLM call, no agent pipeline
astra "explain this code" # full natural-language agent pipeline
astra chat # interactive REPL with streaming, history, autocomplete
Configuration
Astra reads, in order (each layer overrides the previous):
- packaged defaults (
src/astra/config/defaults.yaml) ~/.astra/config.yaml(user overrides)- environment variables, e.g.
ASTRA_APP__LOG_LEVEL=DEBUG
Provider API keys live in ~/.astra/.env (written by astra setup) or a project-local
.env (copy .env.example to get started by hand instead of the wizard).
Releasing (maintainers)
CI (.github/workflows/ci.yml) runs ruff/mypy/pytest on every push and PR to main.
Publishing to PyPI (.github/workflows/release.yml) uses PyPI's trusted-publishing (OIDC)
flow — no token stored in this repo. One-time setup required on PyPI, done once by
whoever owns the astra-cli-agent project there:
- Register the
astra-cli-agentproject on PyPI (or claim it if unclaimed). - In that project's PyPI settings → Publishing, add a trusted publisher: this GitHub repo,
workflow file
release.yml, environment namepypi. - In this repo's GitHub settings → Environments, create an environment named
pypi(ideally with a required-reviewer rule, so a published Release doesn't auto-publish without a human glance). - Cut a GitHub Release (tag + "Publish release" in the UI) — that triggers the workflow.
Development
pytest
ruff check .
mypy src
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file astra_cli_agent-0.1.0.tar.gz.
File metadata
- Download URL: astra_cli_agent-0.1.0.tar.gz
- Upload date:
- Size: 148.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f04b0d0caa3d4998057de794e0734ce2afc9ce8851cb736324253e39ab07523
|
|
| MD5 |
ad2c8fe58ce302be469435ba5fe36ca9
|
|
| BLAKE2b-256 |
74762bf890b01e6cccb3f8bbfe07469253db947475447405851aa2c288333f3c
|
Provenance
The following attestation bundles were made for astra_cli_agent-0.1.0.tar.gz:
Publisher:
release.yml on Subharjun/astra-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
astra_cli_agent-0.1.0.tar.gz -
Subject digest:
4f04b0d0caa3d4998057de794e0734ce2afc9ce8851cb736324253e39ab07523 - Sigstore transparency entry: 2143801088
- Sigstore integration time:
-
Permalink:
Subharjun/astra-cli@d9545b383c0d03d73f5bd3bd2c34921859607f60 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Subharjun
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d9545b383c0d03d73f5bd3bd2c34921859607f60 -
Trigger Event:
release
-
Statement type:
File details
Details for the file astra_cli_agent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: astra_cli_agent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 97.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7dd5632d40c5d8cf976a747f04a3eeed3cb93d11e3b3786f43c51f159470505
|
|
| MD5 |
49b025d91d72edaef1b455430b4e71b0
|
|
| BLAKE2b-256 |
978da39d161150831e2923bc58e9f41daf1ad9ca5c23f7ec0db2c2efd8169c56
|
Provenance
The following attestation bundles were made for astra_cli_agent-0.1.0-py3-none-any.whl:
Publisher:
release.yml on Subharjun/astra-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
astra_cli_agent-0.1.0-py3-none-any.whl -
Subject digest:
e7dd5632d40c5d8cf976a747f04a3eeed3cb93d11e3b3786f43c51f159470505 - Sigstore transparency entry: 2143801703
- Sigstore integration time:
-
Permalink:
Subharjun/astra-cli@d9545b383c0d03d73f5bd3bd2c34921859607f60 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Subharjun
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d9545b383c0d03d73f5bd3bd2c34921859607f60 -
Trigger Event:
release
-
Statement type: