aiohttp<4,>=3.9
websockets<18,>=12
cron-descriptor<3,>=1.4
croniter<3,>=2.0
numpy<3,>=1.21
snowballstemmer>=1.0
packaging>=23.0
pip>=22.3
sqlite-vec<1,>=0.1
python-docx<2,>=1.1
pdfplumber<1,>=0.11
python-pptx<2,>=0.6.21
html2text>=2020.1.16
reportlab<6,>=4
trafilatura<3,>=2
nh3>=0.2
openpyxl<4,>=3.1
Pillow<13,>=10
tree-sitter<1,>=0.21
tree-sitter-language-pack<2,>=1.15.7
httpx>=0.27
PyYAML<7,>=6
python-dotenv>=1.0
tzdata>=2024.1
zstandard<1,>=0.23
argon2-cffi<26,>=23
cryptography>=42
jsonschema>=4
mcp<2,>=1.10

[:sys_platform == "linux" and platform_machine == "x86_64"]
pysqlite3-binary>=0.5.4

[anthropic]
anthropic>=0.20

[bedrock]
boto3>=1.34

[dev]
personalclaw[test]
personalclaw[models]
personalclaw[bedrock]
personalclaw[openai]
black<27,>=26
isort<9,>=8
flake8<8,>=7
mypy<3,>=2
build>=1.0

[embeddings]
sentence-transformers>=5.6
faiss-cpu>=1.7
torch

[eval]
jinja2>=3.0

[httpx]
httpx>=0.27

[js-render]
playwright>=1.40

[keychain]
keyring>=24

[models]
personalclaw[embeddings]
personalclaw[stt]
personalclaw[tts]

[openai]
openai>=1.0

[slack]
slack-sdk<4,>=3.27

[stt]
faster-whisper>=1.0
av<19

[test]
pytest>=7
pytest-asyncio>=0.23
pytest-xdist>=3
pytest-timeout>=2
pytest-cov>=4
pytest-split>=0.8
hypothesis>=6

[tts]
huggingface-hub>=0.23
piper-tts>=1.2
