ec2bedrock-cli
Agent and CLI to manage EC2 instances running self-hosted LLM inference: warm up an instance and serve an LLM, then hibernate it on idle to power ongoing inference workloads such as ADLC. Built on ec2-cli for the underlying EC2 machine lifecycle.
What you get
- An agent-first CLI cited from teken
(
afi-cli) — the runtime package has no third-party dependencies. - A mesh identity —
culture.yaml(suffix+backend) and the matching prompt file (CLAUDE.mdforbackend: claude). - The canonical guildmaster skill kit (11 skills) under
.claude/skills/, vendored cite-don't-import. Seedocs/skill-sources.md. - A build + deploy baseline — pytest, lint, the agent-first rubric gate, and PyPI Trusted Publishing wired into GitHub Actions.
Quickstart
uv sync
uv run pytest -n auto # run the test suite
uv run ec2bedrock whoami # identity from culture.yaml (command is `ec2bedrock`; dist is `ec2bedrock-cli`)
uv run ec2bedrock learn # self-teaching prompt (add --json)
uv run teken cli doctor . --strict # the agent-first rubric gate CI runs
Milestone 1 — cost estimator (offline)
All commands below are offline / dry-run (no AWS calls). compare and decide
encode the recommendation in the exit code: ec2 = 0, token-provider =
20, mixed = 21. Note that 0 doubles as "recommend EC2" and generic
success — a router that needs an unambiguous verdict should parse --json
(the recommendation/decision field) rather than rely on exit code 0 alone;
the non-zero codes (20/21) are unambiguous, and 1/2 remain user/environment
errors.
ec2bedrock profile list
ec2bedrock profile show qwen27b-awq-l40s
ec2bedrock estimate --profile qwen27b-awq-l40s --hours 8 --days 22
ec2bedrock compare --profile qwen27b-awq-l40s --input-tokens 300000000 --output-tokens 60000000 --provider-input-price 0.58 --provider-output-price 3.01
ec2bedrock decide --workload meeting-mode --input-tokens 3000000 --output-tokens 500000 --sensitive --json
CLI
| Verb | What it does |
|---|---|
whoami |
Report this agent's nick, version, backend, and model from culture.yaml. |
learn |
Print a structured self-teaching prompt. |
explain <path> |
Markdown docs for any noun/verb path. |
overview |
Read-only descriptive snapshot of the agent. |
doctor |
Check the agent-identity invariants (prompt-file-present, backend-consistency). |
cli overview |
Describe the CLI surface itself. |
Every command supports --json. Results go to stdout, errors/diagnostics to
stderr (never mixed). Exit codes: 0 success, 1 user error, 2 environment
error, 3+ reserved.
Make it your own
- Rename the package
ec2bedrock/and theec2bedrock-cliCLI/dist name throughoutpyproject.toml, the package,tests/,sonar-project.properties, and thisREADME.md. The name is hard-coded in ~100 places, so list every occurrence first — see thegit grepdiscovery command inCLAUDE.md, the authoritative rename procedure. - Edit
culture.yamlwith yoursuffixandbackend. - Rewrite
CLAUDE.mdfor your agent and run/init. - Re-vendor only the skills you need from guildmaster (see
docs/skill-sources.md).
See CLAUDE.md for the full conventions (version-bump-every-PR,
the cicd PR lane, deploy setup).
License
Apache 2.0 — see LICENSE.
Metadata
Release files for ec2bedrock-cli 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ec2bedrock_cli-0.6.0.tar.gz | 158.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ec2bedrock_cli-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 196.2 kB
Release files / ec2bedrock_cli-0.6.0.tar.gz
| Download URL | ec2bedrock_cli-0.6.0.tar.gz |
|---|---|
| Size | 158.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e2d68b630c47d43eb67c259415858360060ee4c5bb3eccf21dae456180730c62
|
|
BLAKE2b-256 checksum How to use checksums |
afb26929178d685cd473ac1d43688a73ca5cc5be872bf32ebb55f448c6ebd31e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ec2bedrock_cli-0.6.0-py3-none-any.whl
| Download URL | ec2bedrock_cli-0.6.0-py3-none-any.whl |
|---|---|
| Size | 38.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
65fb64f35cf8bfa71f374af5963d0f09acab8833c9782b54155081d45383f0e5
|
|
BLAKE2b-256 checksum How to use checksums |
ae797909370543e4e824cde82bed664a9e98ce7d55f6b2fae72bee602f927ece
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for ec2bedrock-cli 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.