hauba 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hauba-0.1.0/.gitignore +59 -0
- hauba-0.1.0/LICENSE +21 -0
- hauba-0.1.0/PKG-INFO +325 -0
- hauba-0.1.0/README.md +257 -0
- hauba-0.1.0/pyproject.toml +152 -0
- hauba-0.1.0/src/hauba/__init__.py +5 -0
- hauba-0.1.0/src/hauba/__main__.py +5 -0
- hauba-0.1.0/src/hauba/agents/__init__.py +6 -0
- hauba-0.1.0/src/hauba/agents/base.py +133 -0
- hauba-0.1.0/src/hauba/agents/computer_use.py +225 -0
- hauba-0.1.0/src/hauba/agents/coworker.py +74 -0
- hauba-0.1.0/src/hauba/agents/director.py +568 -0
- hauba-0.1.0/src/hauba/agents/registry.py +115 -0
- hauba-0.1.0/src/hauba/agents/subagent.py +218 -0
- hauba-0.1.0/src/hauba/agents/worker.py +191 -0
- hauba-0.1.0/src/hauba/brain/__init__.py +1 -0
- hauba-0.1.0/src/hauba/brain/deliberation.py +260 -0
- hauba-0.1.0/src/hauba/brain/intent.py +143 -0
- hauba-0.1.0/src/hauba/brain/llm.py +213 -0
- hauba-0.1.0/src/hauba/brain/planner.py +57 -0
- hauba-0.1.0/src/hauba/bundled_skills/api-design-and-integration.md +64 -0
- hauba-0.1.0/src/hauba/bundled_skills/code-generation.md +60 -0
- hauba-0.1.0/src/hauba/bundled_skills/data-engineering.md +61 -0
- hauba-0.1.0/src/hauba/bundled_skills/debugging-and-repair.md +62 -0
- hauba-0.1.0/src/hauba/bundled_skills/devops-and-deployment.md +64 -0
- hauba-0.1.0/src/hauba/bundled_skills/full-stack-engineering.md +65 -0
- hauba-0.1.0/src/hauba/bundled_skills/refactoring-and-migration.md +64 -0
- hauba-0.1.0/src/hauba/bundled_skills/research-and-analysis.md +62 -0
- hauba-0.1.0/src/hauba/bundled_skills/security-hardening.md +63 -0
- hauba-0.1.0/src/hauba/bundled_skills/testing-and-quality.md +62 -0
- hauba-0.1.0/src/hauba/bundled_strategies/api-development.yaml +72 -0
- hauba-0.1.0/src/hauba/bundled_strategies/bug-fixing.yaml +69 -0
- hauba-0.1.0/src/hauba/bundled_strategies/code-review-and-refactor.yaml +71 -0
- hauba-0.1.0/src/hauba/bundled_strategies/data-pipeline.yaml +72 -0
- hauba-0.1.0/src/hauba/bundled_strategies/research-and-prototype.yaml +69 -0
- hauba-0.1.0/src/hauba/bundled_strategies/saas-building.yaml +76 -0
- hauba-0.1.0/src/hauba/channels/__init__.py +3 -0
- hauba-0.1.0/src/hauba/channels/discord.py +124 -0
- hauba-0.1.0/src/hauba/channels/gateway.py +143 -0
- hauba-0.1.0/src/hauba/channels/telegram.py +145 -0
- hauba-0.1.0/src/hauba/channels/voice.py +169 -0
- hauba-0.1.0/src/hauba/cli.py +408 -0
- hauba-0.1.0/src/hauba/compose/__init__.py +1 -0
- hauba-0.1.0/src/hauba/compose/parser.py +148 -0
- hauba-0.1.0/src/hauba/compose/runner.py +175 -0
- hauba-0.1.0/src/hauba/core/__init__.py +7 -0
- hauba-0.1.0/src/hauba/core/config.py +129 -0
- hauba-0.1.0/src/hauba/core/constants.py +133 -0
- hauba-0.1.0/src/hauba/core/dag.py +188 -0
- hauba-0.1.0/src/hauba/core/events.py +70 -0
- hauba-0.1.0/src/hauba/core/notifier.py +185 -0
- hauba-0.1.0/src/hauba/core/quality.py +295 -0
- hauba-0.1.0/src/hauba/core/replay.py +79 -0
- hauba-0.1.0/src/hauba/core/setup.py +60 -0
- hauba-0.1.0/src/hauba/core/types.py +218 -0
- hauba-0.1.0/src/hauba/doctor.py +193 -0
- hauba-0.1.0/src/hauba/exceptions.py +63 -0
- hauba-0.1.0/src/hauba/ledger/__init__.py +1 -0
- hauba-0.1.0/src/hauba/ledger/gates.py +97 -0
- hauba-0.1.0/src/hauba/ledger/tracker.py +373 -0
- hauba-0.1.0/src/hauba/ledger/wal.py +179 -0
- hauba-0.1.0/src/hauba/memory/__init__.py +5 -0
- hauba-0.1.0/src/hauba/memory/store.py +151 -0
- hauba-0.1.0/src/hauba/py.typed +0 -0
- hauba-0.1.0/src/hauba/security.py +157 -0
- hauba-0.1.0/src/hauba/skills/__init__.py +1 -0
- hauba-0.1.0/src/hauba/skills/cli.py +132 -0
- hauba-0.1.0/src/hauba/skills/loader.py +156 -0
- hauba-0.1.0/src/hauba/skills/matcher.py +118 -0
- hauba-0.1.0/src/hauba/skills/strategy.py +254 -0
- hauba-0.1.0/src/hauba/tools/__init__.py +29 -0
- hauba-0.1.0/src/hauba/tools/base.py +19 -0
- hauba-0.1.0/src/hauba/tools/bash.py +89 -0
- hauba-0.1.0/src/hauba/tools/browser.py +450 -0
- hauba-0.1.0/src/hauba/tools/files.py +119 -0
- hauba-0.1.0/src/hauba/tools/git.py +72 -0
- hauba-0.1.0/src/hauba/tools/screen.py +194 -0
- hauba-0.1.0/src/hauba/tools/web.py +145 -0
- hauba-0.1.0/src/hauba/ui/__init__.py +5 -0
- hauba-0.1.0/src/hauba/ui/replay.py +126 -0
- hauba-0.1.0/src/hauba/ui/terminal.py +148 -0
- hauba-0.1.0/src/hauba/ui/web.py +226 -0
- hauba-0.1.0/tests/__init__.py +0 -0
- hauba-0.1.0/tests/conftest.py +35 -0
- hauba-0.1.0/tests/e2e/__init__.py +0 -0
- hauba-0.1.0/tests/integration/__init__.py +0 -0
- hauba-0.1.0/tests/integration/test_e2e_pipeline.py +144 -0
- hauba-0.1.0/tests/integration/test_phase2_pipeline.py +210 -0
- hauba-0.1.0/tests/integration/test_phase3_pipeline.py +151 -0
- hauba-0.1.0/tests/integration/test_phase4_pipeline.py +97 -0
- hauba-0.1.0/tests/integration/test_phase5_pipeline.py +151 -0
- hauba-0.1.0/tests/unit/__init__.py +0 -0
- hauba-0.1.0/tests/unit/agents/__init__.py +0 -0
- hauba-0.1.0/tests/unit/agents/test_computer_use.py +196 -0
- hauba-0.1.0/tests/unit/brain/__init__.py +0 -0
- hauba-0.1.0/tests/unit/brain/test_intent.py +44 -0
- hauba-0.1.0/tests/unit/channels/__init__.py +0 -0
- hauba-0.1.0/tests/unit/channels/test_discord.py +71 -0
- hauba-0.1.0/tests/unit/channels/test_gateway.py +145 -0
- hauba-0.1.0/tests/unit/channels/test_telegram.py +69 -0
- hauba-0.1.0/tests/unit/channels/test_voice.py +91 -0
- hauba-0.1.0/tests/unit/compose/__init__.py +0 -0
- hauba-0.1.0/tests/unit/compose/test_parser.py +217 -0
- hauba-0.1.0/tests/unit/compose/test_runner.py +142 -0
- hauba-0.1.0/tests/unit/core/__init__.py +0 -0
- hauba-0.1.0/tests/unit/core/test_config.py +64 -0
- hauba-0.1.0/tests/unit/core/test_dag.py +96 -0
- hauba-0.1.0/tests/unit/core/test_events.py +88 -0
- hauba-0.1.0/tests/unit/core/test_notifier.py +171 -0
- hauba-0.1.0/tests/unit/core/test_quality.py +77 -0
- hauba-0.1.0/tests/unit/core/test_replay.py +132 -0
- hauba-0.1.0/tests/unit/ledger/__init__.py +0 -0
- hauba-0.1.0/tests/unit/ledger/test_gates.py +92 -0
- hauba-0.1.0/tests/unit/ledger/test_tracker.py +174 -0
- hauba-0.1.0/tests/unit/ledger/test_wal.py +67 -0
- hauba-0.1.0/tests/unit/memory/__init__.py +0 -0
- hauba-0.1.0/tests/unit/memory/test_store.py +54 -0
- hauba-0.1.0/tests/unit/skills/__init__.py +0 -0
- hauba-0.1.0/tests/unit/skills/test_loader.py +77 -0
- hauba-0.1.0/tests/unit/skills/test_matcher.py +60 -0
- hauba-0.1.0/tests/unit/skills/test_skill_cli.py +139 -0
- hauba-0.1.0/tests/unit/skills/test_strategy.py +85 -0
- hauba-0.1.0/tests/unit/tools/__init__.py +0 -0
- hauba-0.1.0/tests/unit/tools/test_bash.py +39 -0
- hauba-0.1.0/tests/unit/tools/test_browser.py +171 -0
- hauba-0.1.0/tests/unit/tools/test_files.py +78 -0
- hauba-0.1.0/tests/unit/tools/test_git.py +32 -0
- hauba-0.1.0/tests/unit/tools/test_screen.py +231 -0
- hauba-0.1.0/tests/unit/tools/test_web.py +168 -0
- hauba-0.1.0/tests/unit/ui/__init__.py +0 -0
- hauba-0.1.0/tests/unit/ui/test_replay_player.py +142 -0
- hauba-0.1.0/tests/unit/ui/test_web.py +138 -0
hauba-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.egg-info/
|
|
6
|
+
dist/
|
|
7
|
+
build/
|
|
8
|
+
*.egg
|
|
9
|
+
.eggs/
|
|
10
|
+
|
|
11
|
+
# Virtual environments
|
|
12
|
+
.venv/
|
|
13
|
+
venv/
|
|
14
|
+
env/
|
|
15
|
+
|
|
16
|
+
# IDE
|
|
17
|
+
.idea/
|
|
18
|
+
.vscode/
|
|
19
|
+
*.swp
|
|
20
|
+
*.swo
|
|
21
|
+
*~
|
|
22
|
+
|
|
23
|
+
# Testing
|
|
24
|
+
.coverage
|
|
25
|
+
htmlcov/
|
|
26
|
+
.pytest_cache/
|
|
27
|
+
|
|
28
|
+
# Type checking
|
|
29
|
+
.pyright/
|
|
30
|
+
.mypy_cache/
|
|
31
|
+
|
|
32
|
+
# OS
|
|
33
|
+
.DS_Store
|
|
34
|
+
Thumbs.db
|
|
35
|
+
desktop.ini
|
|
36
|
+
|
|
37
|
+
# Environment
|
|
38
|
+
.env
|
|
39
|
+
.env.local
|
|
40
|
+
|
|
41
|
+
# Hauba data (user-specific)
|
|
42
|
+
~/.hauba/
|
|
43
|
+
|
|
44
|
+
# SQLite databases
|
|
45
|
+
*.db
|
|
46
|
+
*.sqlite
|
|
47
|
+
*.sqlite3
|
|
48
|
+
|
|
49
|
+
# Logs
|
|
50
|
+
*.log
|
|
51
|
+
|
|
52
|
+
# Ruff cache
|
|
53
|
+
.ruff_cache/
|
|
54
|
+
|
|
55
|
+
# Docs (generated/internal)
|
|
56
|
+
ARCHITECTURE_V2.md
|
|
57
|
+
BUILD_PHASES_V2.md
|
|
58
|
+
PROGRESS.md
|
|
59
|
+
workflow-guidelines.md
|
hauba-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Hauba AI
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
hauba-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: hauba
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Your AI Engineering Team — In One Command
|
|
5
|
+
Project-URL: Homepage, https://github.com/NikeGunn/haubaa
|
|
6
|
+
Project-URL: Documentation, https://github.com/NikeGunn/haubaa#readme
|
|
7
|
+
Project-URL: Repository, https://github.com/NikeGunn/haubaa
|
|
8
|
+
Project-URL: Issues, https://github.com/NikeGunn/haubaa/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/NikeGunn/haubaa/releases
|
|
10
|
+
Author: Hauba AI
|
|
11
|
+
License-Expression: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: agent,ai,automation,llm,multi-agent,orchestration
|
|
14
|
+
Classifier: Development Status :: 3 - Alpha
|
|
15
|
+
Classifier: Environment :: Console
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
22
|
+
Classifier: Typing :: Typed
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Requires-Dist: aiosqlite<1.0,>=0.20
|
|
25
|
+
Requires-Dist: anyio<5.0,>=4.0
|
|
26
|
+
Requires-Dist: httpx<1.0,>=0.27
|
|
27
|
+
Requires-Dist: litellm<2.0,>=1.40
|
|
28
|
+
Requires-Dist: pydantic<3.0,>=2.5
|
|
29
|
+
Requires-Dist: pyyaml<7.0,>=6.0
|
|
30
|
+
Requires-Dist: rich<14.0,>=13.0
|
|
31
|
+
Requires-Dist: structlog<25.0,>=24.1
|
|
32
|
+
Requires-Dist: typer<1.0,>=0.12
|
|
33
|
+
Provides-Extra: all
|
|
34
|
+
Requires-Dist: discord-py<3.0,>=2.3; extra == 'all'
|
|
35
|
+
Requires-Dist: edge-tts<7.0,>=6.1; extra == 'all'
|
|
36
|
+
Requires-Dist: fastapi<1.0,>=0.110; extra == 'all'
|
|
37
|
+
Requires-Dist: openai-whisper>=20231117; extra == 'all'
|
|
38
|
+
Requires-Dist: pillow<11.0,>=10.0; extra == 'all'
|
|
39
|
+
Requires-Dist: playwright<2.0,>=1.40; extra == 'all'
|
|
40
|
+
Requires-Dist: pyautogui<1.0,>=0.9; extra == 'all'
|
|
41
|
+
Requires-Dist: python-telegram-bot<22.0,>=21.0; extra == 'all'
|
|
42
|
+
Requires-Dist: sounddevice<1.0,>=0.4; extra == 'all'
|
|
43
|
+
Requires-Dist: uvicorn<1.0,>=0.27; extra == 'all'
|
|
44
|
+
Requires-Dist: websockets<14.0,>=12.0; extra == 'all'
|
|
45
|
+
Provides-Extra: channels
|
|
46
|
+
Requires-Dist: discord-py<3.0,>=2.3; extra == 'channels'
|
|
47
|
+
Requires-Dist: python-telegram-bot<22.0,>=21.0; extra == 'channels'
|
|
48
|
+
Provides-Extra: computer-use
|
|
49
|
+
Requires-Dist: pillow<11.0,>=10.0; extra == 'computer-use'
|
|
50
|
+
Requires-Dist: playwright<2.0,>=1.40; extra == 'computer-use'
|
|
51
|
+
Requires-Dist: pyautogui<1.0,>=0.9; extra == 'computer-use'
|
|
52
|
+
Provides-Extra: dev
|
|
53
|
+
Requires-Dist: pre-commit<4.0,>=3.7; extra == 'dev'
|
|
54
|
+
Requires-Dist: pyright<2.0,>=1.1; extra == 'dev'
|
|
55
|
+
Requires-Dist: pytest-asyncio<1.0,>=0.23; extra == 'dev'
|
|
56
|
+
Requires-Dist: pytest-cov<6.0,>=5.0; extra == 'dev'
|
|
57
|
+
Requires-Dist: pytest<9.0,>=8.0; extra == 'dev'
|
|
58
|
+
Requires-Dist: ruff<1.0,>=0.5; extra == 'dev'
|
|
59
|
+
Provides-Extra: voice
|
|
60
|
+
Requires-Dist: edge-tts<7.0,>=6.1; extra == 'voice'
|
|
61
|
+
Requires-Dist: openai-whisper>=20231117; extra == 'voice'
|
|
62
|
+
Requires-Dist: sounddevice<1.0,>=0.4; extra == 'voice'
|
|
63
|
+
Provides-Extra: web
|
|
64
|
+
Requires-Dist: fastapi<1.0,>=0.110; extra == 'web'
|
|
65
|
+
Requires-Dist: uvicorn<1.0,>=0.27; extra == 'web'
|
|
66
|
+
Requires-Dist: websockets<14.0,>=12.0; extra == 'web'
|
|
67
|
+
Description-Content-Type: text/markdown
|
|
68
|
+
|
|
69
|
+
<p align="center">
|
|
70
|
+
<h1 align="center">Hauba</h1>
|
|
71
|
+
<p align="center"><strong>Your AI Engineering Team — In One Command</strong></p>
|
|
72
|
+
<p align="center">
|
|
73
|
+
<a href="https://github.com/NikeGunn/haubaa/actions"><img src="https://github.com/NikeGunn/haubaa/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
74
|
+
<a href="https://pypi.org/project/hauba/"><img src="https://img.shields.io/pypi/v/hauba.svg" alt="PyPI"></a>
|
|
75
|
+
<a href="https://pypi.org/project/hauba/"><img src="https://img.shields.io/pypi/pyversions/hauba.svg" alt="Python"></a>
|
|
76
|
+
<a href="https://github.com/NikeGunn/haubaa/blob/main/LICENSE"><img src="https://img.shields.io/github/license/NikeGunn/haubaa.svg" alt="License"></a>
|
|
77
|
+
</p>
|
|
78
|
+
<p align="center">
|
|
79
|
+
<a href="#install">Install</a> •
|
|
80
|
+
<a href="#quickstart">Quickstart</a> •
|
|
81
|
+
<a href="#features">Features</a> •
|
|
82
|
+
<a href="#architecture">Architecture</a> •
|
|
83
|
+
<a href="CONTRIBUTING.md">Contributing</a>
|
|
84
|
+
</p>
|
|
85
|
+
</p>
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
Hauba is an open-source AI agent framework that orchestrates a full engineering team — architect, backend, frontend, DevOps — controlled by a Director agent that **thinks before it acts**.
|
|
90
|
+
|
|
91
|
+
One command. Zero external dependencies. Works offline with Ollama.
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pip install hauba
|
|
95
|
+
hauba init
|
|
96
|
+
hauba run "build me a landing page with modern design"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Why Hauba?
|
|
100
|
+
|
|
101
|
+
| Feature | Hauba | Others |
|
|
102
|
+
|---------|-------|--------|
|
|
103
|
+
| Multi-agent collaboration | Director → SubAgent → Worker hierarchy | Single agent or basic chains |
|
|
104
|
+
| Zero-hallucination tracking | TaskLedger with SHA-256 hash verification | Trust-based, no verification |
|
|
105
|
+
| Works offline | First-class Ollama support | Requires cloud API |
|
|
106
|
+
| Declarative teams | `hauba.yaml` (like docker-compose for AI) | Code-only configuration |
|
|
107
|
+
| Browser automation | Persistent sessions, stealth mode, crash recovery | Basic or none |
|
|
108
|
+
| Voice mode | Talk to your AI team | Text-only |
|
|
109
|
+
| Replay mode | Watch & share agent sessions | No replay |
|
|
110
|
+
| Single install | `pip install hauba` — no Docker, Redis, or Postgres | Complex setup |
|
|
111
|
+
|
|
112
|
+
## Install
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# From PyPI (recommended)
|
|
116
|
+
pip install hauba
|
|
117
|
+
|
|
118
|
+
# From source
|
|
119
|
+
git clone https://github.com/NikeGunn/haubaa.git
|
|
120
|
+
cd haubaa
|
|
121
|
+
pip install -e ".[dev]"
|
|
122
|
+
|
|
123
|
+
# Optional extras
|
|
124
|
+
pip install hauba[computer-use] # Browser + screen control
|
|
125
|
+
pip install hauba[voice] # Voice mode (Whisper + TTS)
|
|
126
|
+
pip install hauba[web] # Web dashboard
|
|
127
|
+
pip install hauba[all] # Everything
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Requirements:** Python 3.11+ — nothing else.
|
|
131
|
+
|
|
132
|
+
## Quickstart
|
|
133
|
+
|
|
134
|
+
### 1. Initialize
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
hauba init
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Pick your LLM provider (Anthropic, OpenAI, Ollama, DeepSeek) and enter your API key.
|
|
141
|
+
|
|
142
|
+
### 2. Run a task
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
hauba run "create a REST API with user authentication"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The Director agent will:
|
|
149
|
+
1. **Deliberate** — understand your request and assess complexity
|
|
150
|
+
2. **Plan** — decompose into steps with a dependency DAG
|
|
151
|
+
3. **Execute** — use tools (bash, files, git, browser) to build it
|
|
152
|
+
4. **Verify** — TaskLedger ensures every step completed with hash verification
|
|
153
|
+
5. **Deliver** — only after all 5 verification gates pass
|
|
154
|
+
|
|
155
|
+
### 3. Check system health
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
hauba doctor
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Hauba Compose
|
|
162
|
+
|
|
163
|
+
Define your AI team declaratively:
|
|
164
|
+
|
|
165
|
+
```yaml
|
|
166
|
+
# hauba.yaml
|
|
167
|
+
team: "my-saas"
|
|
168
|
+
model: "claude-sonnet-4-5-20250929"
|
|
169
|
+
|
|
170
|
+
agents:
|
|
171
|
+
architect:
|
|
172
|
+
role: "Senior Software Architect"
|
|
173
|
+
skills: [system-design, database-design, api-design]
|
|
174
|
+
|
|
175
|
+
backend:
|
|
176
|
+
role: "Backend Engineer"
|
|
177
|
+
skills: [fastapi, postgresql, auth]
|
|
178
|
+
depends_on: [architect]
|
|
179
|
+
|
|
180
|
+
frontend:
|
|
181
|
+
role: "Frontend Engineer"
|
|
182
|
+
skills: [nextjs, tailwind, react]
|
|
183
|
+
depends_on: [architect]
|
|
184
|
+
|
|
185
|
+
devops:
|
|
186
|
+
role: "DevOps Engineer"
|
|
187
|
+
skills: [docker, ci-cd, monitoring]
|
|
188
|
+
depends_on: [backend, frontend]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
hauba compose up "build a SaaS dashboard with auth and billing"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Features
|
|
196
|
+
|
|
197
|
+
### Multi-Agent Hierarchy
|
|
198
|
+
- **Director** — receives your task, deliberates, creates a project plan
|
|
199
|
+
- **SubAgent** — manages a milestone, coordinates workers
|
|
200
|
+
- **Worker** — executes specific tasks with retry logic
|
|
201
|
+
- **CoWorker** — ephemeral helpers for sub-tasks
|
|
202
|
+
|
|
203
|
+
### TaskLedger (Zero-Hallucination System)
|
|
204
|
+
Every task is tracked with a bit-vector and SHA-256 hash chain. Five verification gates ensure nothing is skipped or faked:
|
|
205
|
+
1. **Pre-execution** — Ledger must exist before work begins
|
|
206
|
+
2. **Dependency** — All dependencies verified before task starts
|
|
207
|
+
3. **Completion** — Output hashed and verified on disk
|
|
208
|
+
4. **Delivery** — Full ledger gate check at each level
|
|
209
|
+
5. **Reconciliation** — Plan count matches ledger count
|
|
210
|
+
|
|
211
|
+
### Browser Automation (Persistent Sessions)
|
|
212
|
+
```bash
|
|
213
|
+
hauba run "scrape product data from the competitor website"
|
|
214
|
+
```
|
|
215
|
+
- Persistent browser context — sessions survive crashes
|
|
216
|
+
- Stealth mode — anti-bot detection evasion
|
|
217
|
+
- Auto-retry with crash recovery
|
|
218
|
+
|
|
219
|
+
### Voice Mode
|
|
220
|
+
```bash
|
|
221
|
+
hauba voice
|
|
222
|
+
```
|
|
223
|
+
Talk to your AI team. Uses Whisper (local) for speech-to-text and edge-tts for responses. Works fully offline with Ollama.
|
|
224
|
+
|
|
225
|
+
### Replay Mode
|
|
226
|
+
```bash
|
|
227
|
+
hauba replay <task_id>
|
|
228
|
+
hauba replay <task_id> --speed 5
|
|
229
|
+
```
|
|
230
|
+
Every agent action is recorded and replayable with speed control.
|
|
231
|
+
|
|
232
|
+
### Skills & Strategies
|
|
233
|
+
10 built-in skills and 6 strategies ship with Hauba:
|
|
234
|
+
```bash
|
|
235
|
+
hauba skill list # See all available skills
|
|
236
|
+
hauba skill show code-generation # View a skill's details
|
|
237
|
+
hauba skill install ./my-skill.md # Install a custom skill
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Web Dashboard
|
|
241
|
+
```bash
|
|
242
|
+
hauba serve
|
|
243
|
+
```
|
|
244
|
+
Real-time web dashboard with WebSocket event streaming at `http://localhost:8420`.
|
|
245
|
+
|
|
246
|
+
### Channels
|
|
247
|
+
```bash
|
|
248
|
+
hauba voice # Voice conversation
|
|
249
|
+
hauba serve # Web dashboard
|
|
250
|
+
```
|
|
251
|
+
Plus Telegram and Discord bot integrations.
|
|
252
|
+
|
|
253
|
+
## CLI Reference
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
hauba init # Interactive setup wizard
|
|
257
|
+
hauba run "task description" # Execute a task
|
|
258
|
+
hauba status # Show config and status
|
|
259
|
+
hauba doctor # Diagnose setup issues
|
|
260
|
+
hauba logs # View recent logs
|
|
261
|
+
hauba config <key> [value] # Get/set configuration
|
|
262
|
+
|
|
263
|
+
hauba compose up "task" [-f file] # Run with agent team
|
|
264
|
+
hauba compose validate # Check hauba.yaml syntax
|
|
265
|
+
|
|
266
|
+
hauba skill list # List all skills
|
|
267
|
+
hauba skill show <name> # View skill details
|
|
268
|
+
hauba skill install <path> # Install a skill
|
|
269
|
+
hauba skill create <name> # Scaffold new skill
|
|
270
|
+
|
|
271
|
+
hauba voice # Voice conversation mode
|
|
272
|
+
hauba serve [--port 8420] # Start web dashboard
|
|
273
|
+
hauba replay <task_id> [--speed 2] # Replay a session
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Configuration
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
# Anthropic (default)
|
|
280
|
+
hauba config llm.provider anthropic
|
|
281
|
+
hauba config llm.api_key sk-ant-...
|
|
282
|
+
|
|
283
|
+
# OpenAI
|
|
284
|
+
hauba config llm.provider openai
|
|
285
|
+
hauba config llm.api_key sk-...
|
|
286
|
+
|
|
287
|
+
# Ollama (offline, free)
|
|
288
|
+
hauba config llm.provider ollama
|
|
289
|
+
hauba config llm.model llama3.2
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Architecture
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
Director (1 per task)
|
|
296
|
+
├── SubAgent (per milestone)
|
|
297
|
+
│ ├── Worker (per task)
|
|
298
|
+
│ │ └── CoWorker (ephemeral)
|
|
299
|
+
│ └── Worker
|
|
300
|
+
└── SubAgent
|
|
301
|
+
└── Worker
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Stack:** Python 3.11+ | asyncio | SQLite | litellm | Typer | Rich | Pydantic v2
|
|
305
|
+
|
|
306
|
+
## Contributing
|
|
307
|
+
|
|
308
|
+
We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
git clone https://github.com/NikeGunn/haubaa.git
|
|
312
|
+
cd haubaa
|
|
313
|
+
pip install -e ".[dev]"
|
|
314
|
+
pytest tests/ -v
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
## License
|
|
318
|
+
|
|
319
|
+
MIT License — see [LICENSE](LICENSE) for details.
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
<p align="center">
|
|
324
|
+
<strong>Hauba doesn't guess. Hauba verifies.</strong>
|
|
325
|
+
</p>
|
hauba-0.1.0/README.md
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">Hauba</h1>
|
|
3
|
+
<p align="center"><strong>Your AI Engineering Team — In One Command</strong></p>
|
|
4
|
+
<p align="center">
|
|
5
|
+
<a href="https://github.com/NikeGunn/haubaa/actions"><img src="https://github.com/NikeGunn/haubaa/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
6
|
+
<a href="https://pypi.org/project/hauba/"><img src="https://img.shields.io/pypi/v/hauba.svg" alt="PyPI"></a>
|
|
7
|
+
<a href="https://pypi.org/project/hauba/"><img src="https://img.shields.io/pypi/pyversions/hauba.svg" alt="Python"></a>
|
|
8
|
+
<a href="https://github.com/NikeGunn/haubaa/blob/main/LICENSE"><img src="https://img.shields.io/github/license/NikeGunn/haubaa.svg" alt="License"></a>
|
|
9
|
+
</p>
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="#install">Install</a> •
|
|
12
|
+
<a href="#quickstart">Quickstart</a> •
|
|
13
|
+
<a href="#features">Features</a> •
|
|
14
|
+
<a href="#architecture">Architecture</a> •
|
|
15
|
+
<a href="CONTRIBUTING.md">Contributing</a>
|
|
16
|
+
</p>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
Hauba is an open-source AI agent framework that orchestrates a full engineering team — architect, backend, frontend, DevOps — controlled by a Director agent that **thinks before it acts**.
|
|
22
|
+
|
|
23
|
+
One command. Zero external dependencies. Works offline with Ollama.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pip install hauba
|
|
27
|
+
hauba init
|
|
28
|
+
hauba run "build me a landing page with modern design"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Why Hauba?
|
|
32
|
+
|
|
33
|
+
| Feature | Hauba | Others |
|
|
34
|
+
|---------|-------|--------|
|
|
35
|
+
| Multi-agent collaboration | Director → SubAgent → Worker hierarchy | Single agent or basic chains |
|
|
36
|
+
| Zero-hallucination tracking | TaskLedger with SHA-256 hash verification | Trust-based, no verification |
|
|
37
|
+
| Works offline | First-class Ollama support | Requires cloud API |
|
|
38
|
+
| Declarative teams | `hauba.yaml` (like docker-compose for AI) | Code-only configuration |
|
|
39
|
+
| Browser automation | Persistent sessions, stealth mode, crash recovery | Basic or none |
|
|
40
|
+
| Voice mode | Talk to your AI team | Text-only |
|
|
41
|
+
| Replay mode | Watch & share agent sessions | No replay |
|
|
42
|
+
| Single install | `pip install hauba` — no Docker, Redis, or Postgres | Complex setup |
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# From PyPI (recommended)
|
|
48
|
+
pip install hauba
|
|
49
|
+
|
|
50
|
+
# From source
|
|
51
|
+
git clone https://github.com/NikeGunn/haubaa.git
|
|
52
|
+
cd haubaa
|
|
53
|
+
pip install -e ".[dev]"
|
|
54
|
+
|
|
55
|
+
# Optional extras
|
|
56
|
+
pip install hauba[computer-use] # Browser + screen control
|
|
57
|
+
pip install hauba[voice] # Voice mode (Whisper + TTS)
|
|
58
|
+
pip install hauba[web] # Web dashboard
|
|
59
|
+
pip install hauba[all] # Everything
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Requirements:** Python 3.11+ — nothing else.
|
|
63
|
+
|
|
64
|
+
## Quickstart
|
|
65
|
+
|
|
66
|
+
### 1. Initialize
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
hauba init
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Pick your LLM provider (Anthropic, OpenAI, Ollama, DeepSeek) and enter your API key.
|
|
73
|
+
|
|
74
|
+
### 2. Run a task
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
hauba run "create a REST API with user authentication"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The Director agent will:
|
|
81
|
+
1. **Deliberate** — understand your request and assess complexity
|
|
82
|
+
2. **Plan** — decompose into steps with a dependency DAG
|
|
83
|
+
3. **Execute** — use tools (bash, files, git, browser) to build it
|
|
84
|
+
4. **Verify** — TaskLedger ensures every step completed with hash verification
|
|
85
|
+
5. **Deliver** — only after all 5 verification gates pass
|
|
86
|
+
|
|
87
|
+
### 3. Check system health
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
hauba doctor
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Hauba Compose
|
|
94
|
+
|
|
95
|
+
Define your AI team declaratively:
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
# hauba.yaml
|
|
99
|
+
team: "my-saas"
|
|
100
|
+
model: "claude-sonnet-4-5-20250929"
|
|
101
|
+
|
|
102
|
+
agents:
|
|
103
|
+
architect:
|
|
104
|
+
role: "Senior Software Architect"
|
|
105
|
+
skills: [system-design, database-design, api-design]
|
|
106
|
+
|
|
107
|
+
backend:
|
|
108
|
+
role: "Backend Engineer"
|
|
109
|
+
skills: [fastapi, postgresql, auth]
|
|
110
|
+
depends_on: [architect]
|
|
111
|
+
|
|
112
|
+
frontend:
|
|
113
|
+
role: "Frontend Engineer"
|
|
114
|
+
skills: [nextjs, tailwind, react]
|
|
115
|
+
depends_on: [architect]
|
|
116
|
+
|
|
117
|
+
devops:
|
|
118
|
+
role: "DevOps Engineer"
|
|
119
|
+
skills: [docker, ci-cd, monitoring]
|
|
120
|
+
depends_on: [backend, frontend]
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
hauba compose up "build a SaaS dashboard with auth and billing"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Features
|
|
128
|
+
|
|
129
|
+
### Multi-Agent Hierarchy
|
|
130
|
+
- **Director** — receives your task, deliberates, creates a project plan
|
|
131
|
+
- **SubAgent** — manages a milestone, coordinates workers
|
|
132
|
+
- **Worker** — executes specific tasks with retry logic
|
|
133
|
+
- **CoWorker** — ephemeral helpers for sub-tasks
|
|
134
|
+
|
|
135
|
+
### TaskLedger (Zero-Hallucination System)
|
|
136
|
+
Every task is tracked with a bit-vector and SHA-256 hash chain. Five verification gates ensure nothing is skipped or faked:
|
|
137
|
+
1. **Pre-execution** — Ledger must exist before work begins
|
|
138
|
+
2. **Dependency** — All dependencies verified before task starts
|
|
139
|
+
3. **Completion** — Output hashed and verified on disk
|
|
140
|
+
4. **Delivery** — Full ledger gate check at each level
|
|
141
|
+
5. **Reconciliation** — Plan count matches ledger count
|
|
142
|
+
|
|
143
|
+
### Browser Automation (Persistent Sessions)
|
|
144
|
+
```bash
|
|
145
|
+
hauba run "scrape product data from the competitor website"
|
|
146
|
+
```
|
|
147
|
+
- Persistent browser context — sessions survive crashes
|
|
148
|
+
- Stealth mode — anti-bot detection evasion
|
|
149
|
+
- Auto-retry with crash recovery
|
|
150
|
+
|
|
151
|
+
### Voice Mode
|
|
152
|
+
```bash
|
|
153
|
+
hauba voice
|
|
154
|
+
```
|
|
155
|
+
Talk to your AI team. Uses Whisper (local) for speech-to-text and edge-tts for responses. Works fully offline with Ollama.
|
|
156
|
+
|
|
157
|
+
### Replay Mode
|
|
158
|
+
```bash
|
|
159
|
+
hauba replay <task_id>
|
|
160
|
+
hauba replay <task_id> --speed 5
|
|
161
|
+
```
|
|
162
|
+
Every agent action is recorded and replayable with speed control.
|
|
163
|
+
|
|
164
|
+
### Skills & Strategies
|
|
165
|
+
10 built-in skills and 6 strategies ship with Hauba:
|
|
166
|
+
```bash
|
|
167
|
+
hauba skill list # See all available skills
|
|
168
|
+
hauba skill show code-generation # View a skill's details
|
|
169
|
+
hauba skill install ./my-skill.md # Install a custom skill
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Web Dashboard
|
|
173
|
+
```bash
|
|
174
|
+
hauba serve
|
|
175
|
+
```
|
|
176
|
+
Real-time web dashboard with WebSocket event streaming at `http://localhost:8420`.
|
|
177
|
+
|
|
178
|
+
### Channels
|
|
179
|
+
```bash
|
|
180
|
+
hauba voice # Voice conversation
|
|
181
|
+
hauba serve # Web dashboard
|
|
182
|
+
```
|
|
183
|
+
Plus Telegram and Discord bot integrations.
|
|
184
|
+
|
|
185
|
+
## CLI Reference
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
hauba init # Interactive setup wizard
|
|
189
|
+
hauba run "task description" # Execute a task
|
|
190
|
+
hauba status # Show config and status
|
|
191
|
+
hauba doctor # Diagnose setup issues
|
|
192
|
+
hauba logs # View recent logs
|
|
193
|
+
hauba config <key> [value] # Get/set configuration
|
|
194
|
+
|
|
195
|
+
hauba compose up "task" [-f file] # Run with agent team
|
|
196
|
+
hauba compose validate # Check hauba.yaml syntax
|
|
197
|
+
|
|
198
|
+
hauba skill list # List all skills
|
|
199
|
+
hauba skill show <name> # View skill details
|
|
200
|
+
hauba skill install <path> # Install a skill
|
|
201
|
+
hauba skill create <name> # Scaffold new skill
|
|
202
|
+
|
|
203
|
+
hauba voice # Voice conversation mode
|
|
204
|
+
hauba serve [--port 8420] # Start web dashboard
|
|
205
|
+
hauba replay <task_id> [--speed 2] # Replay a session
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Configuration
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Anthropic (default)
|
|
212
|
+
hauba config llm.provider anthropic
|
|
213
|
+
hauba config llm.api_key sk-ant-...
|
|
214
|
+
|
|
215
|
+
# OpenAI
|
|
216
|
+
hauba config llm.provider openai
|
|
217
|
+
hauba config llm.api_key sk-...
|
|
218
|
+
|
|
219
|
+
# Ollama (offline, free)
|
|
220
|
+
hauba config llm.provider ollama
|
|
221
|
+
hauba config llm.model llama3.2
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Architecture
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
Director (1 per task)
|
|
228
|
+
├── SubAgent (per milestone)
|
|
229
|
+
│ ├── Worker (per task)
|
|
230
|
+
│ │ └── CoWorker (ephemeral)
|
|
231
|
+
│ └── Worker
|
|
232
|
+
└── SubAgent
|
|
233
|
+
└── Worker
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Stack:** Python 3.11+ | asyncio | SQLite | litellm | Typer | Rich | Pydantic v2
|
|
237
|
+
|
|
238
|
+
## Contributing
|
|
239
|
+
|
|
240
|
+
We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for details.
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
git clone https://github.com/NikeGunn/haubaa.git
|
|
244
|
+
cd haubaa
|
|
245
|
+
pip install -e ".[dev]"
|
|
246
|
+
pytest tests/ -v
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## License
|
|
250
|
+
|
|
251
|
+
MIT License — see [LICENSE](LICENSE) for details.
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
<p align="center">
|
|
256
|
+
<strong>Hauba doesn't guess. Hauba verifies.</strong>
|
|
257
|
+
</p>
|