[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "timmy-time" version = "1.0.0" description = "Mission Control for sovereign AI agents" readme = "README.md" requires-python = ">=3.11" license = { text = "MIT" } dependencies = [ "agno[sqlite]>=1.4.0", "ollama>=0.3.0", "openai>=1.0.0", "fastapi>=0.115.0", "uvicorn[standard]>=0.32.0", "jinja2>=3.1.0", "httpx>=0.27.0", "python-multipart>=0.0.12", "aiofiles>=24.0.0", "typer>=0.12.0", "rich>=13.0.0", "pydantic-settings>=2.0.0", "websockets>=12.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.24.0", "pytest-cov>=5.0.0", ] # Big-brain: run 8B / 70B / 405B models locally via layer-by-layer loading. # pip install ".[bigbrain]" # On Apple Silicon: pip install "airllm[mlx]" for the MLX-accelerated backend. bigbrain = [ "airllm>=2.9.0", ] # Swarm: Redis-backed pub/sub for multi-agent communication. # pip install ".[swarm]" swarm = [ "redis>=5.0.0", ] # Voice: text-to-speech output via pyttsx3. # pip install ".[voice]" voice = [ "pyttsx3>=2.90", ] # Telegram: bridge Telegram messages to Timmy via python-telegram-bot. # pip install ".[telegram]" telegram = [ "python-telegram-bot>=21.0", ] [project.scripts] timmy = "timmy.cli:main" timmy-serve = "timmy_serve.cli:main" self-tdd = "self_tdd.watchdog:main" [tool.hatch.build.targets.wheel] sources = {"src" = ""} include = [ "src/timmy", "src/timmy_serve", "src/dashboard", "src/config.py", "src/self_tdd", "src/swarm", "src/websocket", "src/voice", "src/notifications", "src/shortcuts", "src/telegram_bot", ] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["src"] asyncio_mode = "auto" addopts = "-v --tb=short" [tool.coverage.run] source = ["src"] omit = ["*/tests/*"]