mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-30 10:52:15 +00:00
Phase 12 — Energy Measurement Upgrade: - EnergyMonitor ABC with multi-vendor support (NVIDIA hw counters, AMD amdsmi, Apple zeus-ml, CPU RAPL sysfs) - EnergyBatch batch-level energy-per-token accounting - SteadyStateDetector CV-based thermal equilibrium detection - EnergyBenchmark with warmup phase - InstrumentedEngine prefers EnergyMonitor over legacy GpuMonitor - Telemetry store/aggregator extended with energy fields Phase 13 — Install, Hosting, Cross-Hardware: - jarvis doctor diagnostic command (8 checks, --json output) - jarvis init post-setup guidance with engine-specific next steps - README Quick Start section - MLX engine backend (Apple Silicon → mlx recommendation) - AMD VRAM/multi-GPU detection via rocm-smi - PyTorch MPS device selection in orchestrator trainers - PWA support (vite-plugin-pwa, service worker, manifest, icons) - Server static file serving fix for PWA files - Dockerfile.gpu.rocm + docker-compose.gpu.rocm.yml for ROCm - Eval framework display module and efficiency metrics 2244 tests pass, 37 skipped. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
121 lines
2.8 KiB
TOML
121 lines
2.8 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "openjarvis"
|
|
version = "1.0.0"
|
|
description = "OpenJarvis — modular AI assistant backend with composable intelligence pillars"
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"click>=8",
|
|
"httpx>=0.27",
|
|
"pynvml>=13.0.1",
|
|
"rich>=13",
|
|
"tomli>=2.0; python_version < '3.11'",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8",
|
|
"pytest-asyncio>=0.24",
|
|
"pytest-cov>=5",
|
|
"respx>=0.22",
|
|
"ruff>=0.4",
|
|
]
|
|
inference-ollama = []
|
|
inference-vllm = []
|
|
inference-llamacpp = []
|
|
inference-mlx = ["mlx-lm>=0.19; sys_platform == 'darwin'"]
|
|
inference-cloud = [
|
|
"openai>=1.30",
|
|
"anthropic>=0.30",
|
|
]
|
|
inference-google = [
|
|
"google-genai>=1.0",
|
|
]
|
|
inference-litellm = ["litellm>=1.40"]
|
|
tools-search = [
|
|
"tavily-python>=0.3",
|
|
]
|
|
memory-faiss = [
|
|
"faiss-cpu>=1.7",
|
|
"sentence-transformers>=2.2",
|
|
"numpy>=1.24",
|
|
]
|
|
memory-colbert = [
|
|
"colbert-ai>=0.2",
|
|
"torch>=2.0",
|
|
]
|
|
memory-pdf = ["pdfplumber>=0.10"]
|
|
memory-bm25 = ["rank-bm25>=0.2.2"]
|
|
server = [
|
|
"fastapi>=0.110",
|
|
"uvicorn>=0.30",
|
|
"pydantic>=2.0",
|
|
]
|
|
agents = []
|
|
openhands = ["openhands-sdk>=1.0; python_version >= '3.12'"]
|
|
claude-code = []
|
|
gpu-metrics = ["pynvml>=12.0"]
|
|
energy-amd = ["amdsmi>=6.1"]
|
|
energy-apple = ["zeus-ml[apple]"]
|
|
energy-all = ["pynvml>=12.0", "amdsmi>=6.1", "zeus-ml[apple]"]
|
|
learning = []
|
|
orchestrator-training = ["torch>=2.0", "transformers>=4.40"]
|
|
channel-telegram = ["python-telegram-bot>=21.0"]
|
|
channel-discord = ["discord.py>=2.3"]
|
|
channel-slack = ["slack-sdk>=3.27"]
|
|
channel-webhook = []
|
|
channel-email = []
|
|
channel-whatsapp = []
|
|
channel-signal = []
|
|
channel-google-chat = []
|
|
channel-irc = []
|
|
channel-webchat = []
|
|
channel-teams = []
|
|
channel-matrix = []
|
|
channel-mattermost = []
|
|
channel-feishu = []
|
|
channel-bluebubbles = []
|
|
channel-whatsapp-baileys = []
|
|
scheduler = ["croniter>=2.0"]
|
|
docs = [
|
|
"mkdocs>=1.6",
|
|
"mkdocs-material>=9.5",
|
|
"mkdocstrings[python]>=0.25",
|
|
]
|
|
|
|
[project.scripts]
|
|
jarvis = "openjarvis.cli:main"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/openjarvis"]
|
|
|
|
[tool.hatch.build.targets.wheel.force-include]
|
|
"src/openjarvis/agents/claude_code_runner" = "openjarvis/agents/claude_code_runner"
|
|
"src/openjarvis/channels/whatsapp_baileys_bridge" = "openjarvis/channels/whatsapp_baileys_bridge"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
markers = [
|
|
"live: requires running inference engine",
|
|
"cloud: requires cloud API keys",
|
|
"nvidia: requires NVIDIA GPU",
|
|
"amd: requires AMD GPU",
|
|
"apple: requires Apple Silicon",
|
|
"slow: long-running test",
|
|
]
|
|
|
|
[tool.ruff]
|
|
target-version = "py310"
|
|
src = ["src", "tests"]
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "W"]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"evals/datasets/*.py" = ["E501"]
|
|
"evals/scorers/*.py" = ["E501"]
|