Metadata-Version: 2.4
Name: workweaver
Version: 0.1.0
Summary: AI for business operations — open-source, self-hostable
Project-URL: Homepage, https://workweaver.ai
Project-URL: Repository, https://github.com/bitfoundry-ai/workweaver
Project-URL: Documentation, https://docs.workweaver.ai
Author-email: Workweaver <hello@workweaver.ai>
License-Expression: AGPL-3.0-or-later
License-File: LICENSE
Keywords: agents,ai,automation,business-operations,workforce
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.13
Requires-Dist: aiohttp>=3.13.5
Requires-Dist: aiosqlite>=0.20.0
Requires-Dist: boto3>=1.42
Requires-Dist: cryptography>=46.0.7
Requires-Dist: email-validator>=2.2.0
Requires-Dist: fastapi>=0.135.0
Requires-Dist: httpx>=0.28.0
Requires-Dist: keyring>=25.6.0
Requires-Dist: moto>=5.1.22
Requires-Dist: orjson>=3.11.0
Requires-Dist: pydantic-settings>=2.13.0
Requires-Dist: pydantic>=2.12.0
Requires-Dist: pyjwt>=2.8
Requires-Dist: python-dotenv>=1.2.2
Requires-Dist: python-multipart>=0.0.20
Requires-Dist: pyyaml>=6.0
Requires-Dist: slowapi>=0.1.9
Requires-Dist: stripe>=15.0
Requires-Dist: structlog>=25.0.0
Requires-Dist: ulid-py>=1.1.0
Requires-Dist: uvicorn[standard]>=0.44.0
Provides-Extra: aws
Requires-Dist: boto3>=1.42; extra == 'aws'
Requires-Dist: botocore>=1.42; extra == 'aws'
Provides-Extra: dev
Requires-Dist: pyright>=1.1; extra == 'dev'
Requires-Dist: pytest-asyncio>=1.3; extra == 'dev'
Requires-Dist: pytest-cov>=7.1; extra == 'dev'
Requires-Dist: pytest>=9.0; extra == 'dev'
Requires-Dist: ruff>=0.15; extra == 'dev'
Provides-Extra: documents
Requires-Dist: openpyxl>=3.1; extra == 'documents'
Requires-Dist: pypdf>=6.10; extra == 'documents'
Requires-Dist: python-docx>=1.2; extra == 'documents'
Requires-Dist: python-pptx>=1.0; extra == 'documents'
Requires-Dist: reportlab>=4.4; extra == 'documents'
Provides-Extra: full
Requires-Dist: asyncpg>=0.29; extra == 'full'
Requires-Dist: audioop-lts>=0.2; extra == 'full'
Requires-Dist: boto3>=1.42; extra == 'full'
Requires-Dist: botocore>=1.42; extra == 'full'
Requires-Dist: livekit-api>=1.1; extra == 'full'
Requires-Dist: livekit>=1.1; extra == 'full'
Requires-Dist: openpyxl>=3.1; extra == 'full'
Requires-Dist: phonenumbers>=9.0; extra == 'full'
Requires-Dist: psycopg2-binary>=2.9; extra == 'full'
Requires-Dist: pypdf>=6.10; extra == 'full'
Requires-Dist: python-docx>=1.2; extra == 'full'
Requires-Dist: python-pptx>=1.0; extra == 'full'
Requires-Dist: reportlab>=4.4; extra == 'full'
Requires-Dist: stripe>=15.0; extra == 'full'
Requires-Dist: twilio>=9.10; extra == 'full'
Requires-Dist: websockets>=16.0; extra == 'full'
Provides-Extra: payments
Requires-Dist: stripe>=15.0; extra == 'payments'
Provides-Extra: postgres
Requires-Dist: asyncpg>=0.29; extra == 'postgres'
Requires-Dist: psycopg2-binary>=2.9; extra == 'postgres'
Provides-Extra: telephony
Requires-Dist: audioop-lts>=0.2; extra == 'telephony'
Requires-Dist: phonenumbers>=9.0; extra == 'telephony'
Requires-Dist: twilio>=9.10; extra == 'telephony'
Provides-Extra: voice
Requires-Dist: livekit-api>=1.1; extra == 'voice'
Requires-Dist: livekit>=1.1; extra == 'voice'
Requires-Dist: websockets>=16.0; extra == 'voice'
Description-Content-Type: text/markdown

# Workweaver

Workweaver is an AI business operating system built around one codebase and
multiple deployment profiles:

- `managed_saas` for managed cloud runtime
- `self_host_production` for customer-managed deployments
- `standalone` and local-first development paths

For standalone/self-host first-run setup, use:

```bash
ww init --email operator@local --password "SelfHost1!" --tenant-name "My Workspace"
ww start
```

`ww init` now writes first-run bootstrap defaults (admin + tenant + demo seed)
alongside profile/server/storage settings.

Packaged-install path (`pip install workweaver`) is controlled by
`.github/workflows/release-pypi.yml`. The package builds from the repo root and
publishes from `v*` tags through PyPI/TestPyPI Trusted Publishing.

Until the first trusted-published PyPI release appears at
https://pypi.org/project/workweaver/, use the repo-local proof path:

```bash
python -m pip install .
workweaver init --non-interactive --force --email operator@local --password "SelfHost1!" --tenant-name "My Workspace"
workweaver start --no-learning-service
```

After the tagged PyPI release workflow publishes the package, the first command
becomes `python -m pip install workweaver`. The same wheel exposes both
`workweaver` and `ww` entry points.

PyPI release automation lives in `.github/workflows/release-pypi.yml`. Configure
pending trusted publishers for project `workweaver` with owner `bitfoundry-ai`,
repository `workweaver`, workflow `release-pypi.yml`, and environments
`testpypi` and `pypi`. Tags matching `pyproject.toml` pre-release versions
publish to TestPyPI; final versions publish to PyPI.

After TestPyPI is configured, validate prereleases with:

```bash
python -m pip install --index-url https://test.pypi.org/simple/ workweaver
```

Then verify the runtime contract:

```bash
curl http://127.0.0.1:8080/health
curl -i http://127.0.0.1:8080/dashboard
```

Docker self-host proof path:

```bash
make self-host-smoke
```

The self-host smoke starts Postgres, Valkey, and the backend with no AWS
credentials, verifies the `self_host_production` profile, dashboard serving,
WorkMemory remember/recall, and mission/task read paths. If Docker is not
available it skips cleanly unless `SELF_HOST_SMOKE_REQUIRED=1` is set.

Cost posture proof path:

```bash
make cost-guard
```

The cost guard checks the committed deployment-profile ceilings, managed
`cost_tier` Terraform controls, and AWS resource-type cost-review coverage
without calling paid cloud APIs.

Canonical architecture and product truth live in:

- `policy/docs-index.yaml`
- `docs/RUNTIME.md`
- `docs/PRODUCT.md`
- `docs/audit/doc-code-capability-map.md`

The managed SaaS runtime direction is frozen in
`docs/RUNTIME.md`:

- serverless edge compute for the public path
- portable relational core for stateful intelligence
- provider-specific adapters only at the boundary
