Skip to main content

Secure, scriptable CLI for Amazon Bedrock Claude models via the AWS Strands Agents SDK.

Project description

haru-cli

A secure, scriptable command line interface for interacting with Amazon Bedrock Claude models through governed, observable, multi-agent workflows. haru-cli is a thin, functional orchestration layer over the AWS Strands Agents SDK, talking to Bedrock through the Converse API with streaming, tool use, MCP client support, multi-agent orchestration, session persistence, OpenTelemetry observability, and Bedrock Guardrails.

Requirements

  • Python 3.13+ (tested on 3.13 and 3.14)
  • uv
  • AWS access via IAM Identity Center (SSO)

Install

pipx install haru-cli

Or from a clone:

uv sync

Commands

Command Purpose
haru login Browser sign-in to IAM Identity Center (OAuth 2.0 + PKCE)
haru chat Interactive streaming chat REPL
haru chat --session-id <id> Persist and restore the conversation under a session id
haru chat --agent <name> Chat with a specific configured agent
haru run "<prompt>" One-shot prompt; prints the answer and exits
haru session list List stored session ids
haru --version Print the installed version

Every command accepts --config <path> (default: config/haru.yaml).

Quickstart

uv run haru login
uv run haru run "Summarise the Converse API in two sentences."
uv run haru chat --agent supervisor --session-id demo

Authentication uses the same PKCE authorization-code flow as aws sso login, caching tokens in the botocore-compatible schema under ~/.aws/sso/cache (0600) so standard AWS tooling can consume and refresh the same cache. Access tokens are refreshed automatically; when a fresh login is needed, commands say so plainly.

Configuration

Declarative YAML under config/ — models, agents, orchestration (supervisor/swarm/graph), MCP servers, guardrails, sessions, logging, and OpenTelemetry. No secrets in YAML: values reference environment variables with ${env:VAR}. See docs/configuration.md.

Development

All quality gates must pass before a change is considered done:

uv run ruff check
uv run ruff format
uv run mypy src
uv run pytest

Coverage is gated at 90% (--cov-fail-under=90). CI runs the full gate set on Python 3.13 and 3.14; releases are built with uv build and published to PyPI via Trusted Publishing on v* tags.

Install the pre-commit hooks once per clone:

uv tool run pre-commit install

Project layout

  • src/haru/ — the package (auth, config, models, agents, tools, steering, sessions, observability, commands)
  • config/ — declarative YAML configuration and steering prompts
  • tests/unit, tests/integration — pytest suites (coverage gate: 90%)
  • .kiro/steering/ — authoritative engineering steering documents

License

Apache-2.0. See LICENSE.

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

haru_cli-0.1.0.tar.gz (175.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

haru_cli-0.1.0-py3-none-any.whl (36.9 kB view details)

Uploaded Python 3

File details

Details for the file haru_cli-0.1.0.tar.gz.

File metadata

  • Download URL: haru_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 175.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for haru_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 510468274e9ee2ec2a910860ca35d90ad67900e497947999bcf70398b3387bbc
MD5 1fb44ea840b1bf1ccca51c787a2a130d
BLAKE2b-256 82b2561691829fc3aff6887c9948297860e40780a88d4510cf5881b4f76a757c

See more details on using hashes here.

Provenance

The following attestation bundles were made for haru_cli-0.1.0.tar.gz:

Publisher: release.yml on SCGIS-Wales/haru-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file haru_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: haru_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 36.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for haru_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 abfe3ba4ec69d07697e9d029844a27d78774dc55bac7048d5bcc282de7f89919
MD5 17445e38fafe2824b2f8102aff997b39
BLAKE2b-256 617eb57e1ac02a87007b5a81439c978889bbb3ad0dc974828e91aeb6aeaa26f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for haru_cli-0.1.0-py3-none-any.whl:

Publisher: release.yml on SCGIS-Wales/haru-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page