Skip to main content

ec2-cli

Agent and CLI for managing AWS EC2 machines (instances) — launch, inspect, start/stop, and operate fleets.

Audience

An AWS user or mesh agent who wants a single at-a-glance answer to "what am I running and what is it costing me" without opening the AWS console.

Before → After

Before: Today you stitch describe-instances and Cost Explorer queries by hand to answer "what am I running + spending."

After: ec2 overview gives you the fleet and cost figures in one command; ec2 instance manages power and limits; ec2 monitor watches spend against limits.

Why it matters

Cost surprise is the #1 EC2 pain. A single trustworthy "running + spend + forecast" view turns reactive bill-shock into a glanceable habit.

Usage

ec2 overview

Live dashboard: fleet listing plus four EC2-service cost figures (MTD, YTD, end-of-month forecast, end-of-year forecast).

ec2 overview
ec2 overview --json

ec2 instance

Manage instances — list, start, stop, set spend limits, and delete.

ec2 instance                          # list instances
ec2 instance start <id> --yes       # start an instance
ec2 instance stop <id> --yes        # stop an instance
ec2 instance limit <id> <amount> --monthly  # set a spend cap
ec2 instance delete <id>            # review what termination would destroy
ec2 instance delete <id> --apply    # terminate (only after a fresh review)

delete is the one irreversible verb: it is gated behind a two-step review → --apply flow. ec2 instance delete <id> prints what would be destroyed (the instance and its EBS volumes) and records a short-lived review token; --apply terminates only when a fresh review (within 15 minutes) exists for that id.

ec2 monitor

Spend monitoring — evaluate against limits, manage a background daemon.

ec2 monitor check                    # evaluate once, alert on breach
ec2 monitor start                    # start the background daemon (~5 min loop)
ec2 monitor stop                     # stop the daemon
ec2 monitor status                   # report daemon running/stopped

Cost figures

The per-machine cost figure is an estimate: spot or on-demand hourly rate × running hours + attached EBS cost. It excludes RI/Savings-Plan discounts and data transfer. Cost Explorer is the billed-truth source.

Monitor scope

Monthly total spend limits are enforced end-to-end with real Cost Explorer data. Per-machine limits and yearly totals are a known follow-up (they require a price/usage-gathering layer).

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.md for backend: claude).
  • The canonical guildmaster skill kit (11 skills) under .claude/skills/, vendored cite-don't-import. See docs/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 ec2 whoami  # identity from culture.yaml (command is `ec2`; dist is `ec2-cli`)
uv run ec2 learn   # self-teaching prompt (add --json)
uv run teken cli doctor . --strict    # the agent-first rubric gate CI runs

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 Live dashboard: fleet + EC2 cost figures (MTD, YTD, forecasts).
doctor Check the agent-identity invariants (prompt-file-present, backend-consistency).
instance Manage instances (list, start, stop, spend limit).
monitor Spend monitoring (check, daemon start/stop/status).
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

  1. Rename the package ec2/ and the ec2-cli CLI/dist name throughout pyproject.toml, the package, tests/, sonar-project.properties, and this README.md. The name is hard-coded in ~100 places, so list every occurrence first — see the git grep discovery command in CLAUDE.md, the authoritative rename procedure.
  2. Edit culture.yaml with your suffix and backend.
  3. Rewrite CLAUDE.md for your agent and run /init.
  4. 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

MIT — see LICENSE.

Metadata

Release files for ec2-cli 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ec2-cli 0.7.0
File Size Uploaded Provenance
ec2_cli-0.7.0.tar.gz 188.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ec2-cli 0.7.0
File Interpreter ABI Platform
ec2_cli-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 235.9 kB

Release files / ec2_cli-0.7.0.tar.gz

Download URL ec2_cli-0.7.0.tar.gz
Size 188.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9b75e858e415cf317c1bd8a2ca4c061aa83912e12c11326afe56483f9861ac57
BLAKE2b-256 checksum
How to use checksums
4a3bd2500274d7b81ad38b66613653cab6e722adce33b87a128b514168f11bb0
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 / ec2_cli-0.7.0-py3-none-any.whl

Download URL ec2_cli-0.7.0-py3-none-any.whl
Size 47.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b1eaaa85fd676327e3ee42e316c81b436690599ee2e56c90e8414a8efe98de8f
BLAKE2b-256 checksum
How to use checksums
233986003a98ae5335e1d6d96a3a096079385133005bd8e966c120b2f8bcecb3
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 ec2-cli 0.7.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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page