Chat web app for strands-compose
Project description
[!IMPORTANT] Community project — not affiliated with AWS or the strands-agents team. Bugs here? Open an issue. Bugs in the underlying SDK? Head to strands-agents.
Overview
Strands Compose lets you describe an agent system in a single YAML file, and Strands Compose Agentcore runs that system on AWS Bedrock AgentCore Runtime.
Strands Compose Chat is the front door: a complete web application where people sign in, open a conversation, and chat with the agents you have built. It handles everything around them - user accounts, conversations, history, access control, and usage tracking.
Focus on building agents, and this app makes them accessible to your users.
Where it fits in the ecosystem:
| Layer | Package | Who uses it |
|---|---|---|
| Define the agents | strands-compose | Developers |
| Run / deploy the agents | strands-compose-agentcore | Developers, operations |
| Put the agents in front of people | strands-compose-chat | End users |
What's included
The application comes complete — there is nothing to assemble:
| Feature | What it gives you |
|---|---|
| Chat interface | Live, streaming replies with multi-agent systems showing their work as it happens. Conversations are saved so people can return to earlier threads. |
| File attachments | Users can send images and documents alongside their messages, within configurable size limits. |
| User accounts and sign-in | Built-in username/password accounts, plus optional single sign-on (SSO) through your existing identity provider — Microsoft Entra, Okta, Google, or any standards-based OAuth provider. |
| Access control | Agents are organised by group, so each person only sees the agents they are entitled to use. Access is closed by default. |
| Admin panel | A web console where an administrator registers agents, manages users and groups, and reviews activity. |
| Usage and cost tracking | Every interaction records token usage, with per-model pricing, per-user budgets, and a dashboard for both administrators and individual users. |
Who it's for
- Freelancers and small teams who have built an agent and need to put it in front of clients or colleagues quickly, with a polished interface and proper sign-in.
- Organisations that want an internal AI assistant or department-specific agents, gated behind company SSO, with usage and cost visibility for budgeting.
- Anyone delivering an agent as a product or internal service who would rather configure a chat app than build and maintain one.
Getting started
The application is published on PyPI as strands-compose-chat and includes the
web interface bundled in. Installing it gives you a command-line tool available
as strands-compose-chat or its short alias scc.
pip install strands-compose-chat
A minimal local run:
scc migrate # create the database
scc serve # start the web server on http://127.0.0.1:8000
Two worked setups are in the examples directory:
01-local-dev— run on your own machine with a local database. The fastest way to try the app.02-docker— a production-like stack (the app plus a PostgreSQL database) with Docker Compose. Recommended for production, and the basis for deploying to orchestrators such as ECS or Kubernetes.
Each example has step-by-step instructions and a configuration template.
Technical overview
The intent here is a brief map, not a deep reference — detailed documentation lives in separate documents.
Architecture.
A single deployable application made of two parts: a Python backend and a web frontend that ships bundled inside it. The backend exposes the API and serves the interface; the frontend is what users see in the browser. The backend talks to your agents only through the strands-compose SDK, so anything agent-related stays consistent with the rest of the ecosystem.
Tech stack.
Built on a modern, high-performance stack selected for streaming and multi-tenant workloads. The async backend handles concurrent SSE streams without blocking, the database layer uses async SQLAlchemy 2.0 with eager-loaded relationships and parameterised queries throughout, and the frontend delivers a responsive interface with real-time updates via an event-driven store.
| Layer | Technology |
|---|---|
| Backend | FastAPI, async SQLAlchemy, Pydantic, Alembic, sqladmin, uvicorn |
| Frontend | React, TypeScript, Vite |
| Database | SQLite (local development), PostgreSQL (production) |
Security.
Authentication, authorisation, and transport security are implemented to production standards with no shortcuts. Every endpoint is gated, every credential is hashed or redacted, and production mode enforces a strict baseline at startup — refusing misconfiguration rather than running with it silently.
| Area | Implementation |
|---|---|
| Authentication | Session-cookie and Bearer API key. Constant-time, enumeration-safe. |
| Password storage | Argon2id hashes only; raw credentials are never persisted or logged. |
| Authorisation | Role-based FastAPI dependencies on every endpoint. Agent visibility requires explicit group membership. |
| OIDC / SSO | Standards-based OAuth 2.0 / OpenID Connect; redirect targets validated against open-redirect. |
| Security headers | Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options: DENY, Content-Security-Policy, X-XSS-Protection, Referrer-Policy on every response. |
| Transport | TrustedHostMiddleware, configurable CORS_ALLOWED_ORIGINS. |
| Production hardening | APP_ENV=prod enforces HTTPS-only cookies, rejects SQLite and wildcard CORS/host settings at startup. |
| Secrets handling | All credentials via environment variables; sensitive fields redacted in logs, diagnostics, and config repr. |
Project details
Release history Release notifications | RSS feed
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 strands_compose_chat-0.1.1.tar.gz.
File metadata
- Download URL: strands_compose_chat-0.1.1.tar.gz
- Upload date:
- Size: 308.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63b6ad7437d3ddebce7c8e64cf663c8d2bafabcbca30900b754853da3ba955c7
|
|
| MD5 |
4be014f46cbeca143029ebc42008147f
|
|
| BLAKE2b-256 |
42881955e10b30d54c81e39a1046abefc8a0c8d2f78008515f5c1870aae6155d
|
Provenance
The following attestation bundles were made for strands_compose_chat-0.1.1.tar.gz:
Publisher:
publish.yml on strands-compose/chat
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
strands_compose_chat-0.1.1.tar.gz -
Subject digest:
63b6ad7437d3ddebce7c8e64cf663c8d2bafabcbca30900b754853da3ba955c7 - Sigstore transparency entry: 2027001609
- Sigstore integration time:
-
Permalink:
strands-compose/chat@c5f9f0110434f6a0ad2262027edf435c591bbd97 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/strands-compose
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c5f9f0110434f6a0ad2262027edf435c591bbd97 -
Trigger Event:
push
-
Statement type:
File details
Details for the file strands_compose_chat-0.1.1-py3-none-any.whl.
File metadata
- Download URL: strands_compose_chat-0.1.1-py3-none-any.whl
- Upload date:
- Size: 127.3 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 |
c85b64dfaabc2e369947291087a52959716c5448e1dd77a34be8d1c1c6a43020
|
|
| MD5 |
aa07e5f707c7c6b7ac6112279fece6fd
|
|
| BLAKE2b-256 |
d7b4cf2ef1a732305ebc5b416c5ab7f1be9c614f3ab570a9b597c726cd061dc4
|
Provenance
The following attestation bundles were made for strands_compose_chat-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on strands-compose/chat
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
strands_compose_chat-0.1.1-py3-none-any.whl -
Subject digest:
c85b64dfaabc2e369947291087a52959716c5448e1dd77a34be8d1c1c6a43020 - Sigstore transparency entry: 2027001758
- Sigstore integration time:
-
Permalink:
strands-compose/chat@c5f9f0110434f6a0ad2262027edf435c591bbd97 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/strands-compose
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c5f9f0110434f6a0ad2262027edf435c591bbd97 -
Trigger Event:
push
-
Statement type: