AI Workstation — Build Software, Edit Video, Process Data, and More
Project description
Stop hiring engineers.
Start shipping products.
An AI engineering company in your terminal. Not a chatbot.
Powered by GitHub Copilot SDK · Open Source · MIT License
Install · Demo · Features · Architecture · Website · PyPI
pip install hauba && hauba init && hauba run "build me a SaaS"
One command gives you an AI team that plans architecture, writes production code, runs tests, fixes bugs, and delivers — while you sleep.
The same AI backbone used by GitHub. Now open-source and in your hands.
Your API key. Your machine. Zero platform cost.
We call this BYOK — Bring Your Own Key. The server is just a message queue. Builds always happen on your machine, with your credentials, under your control. Hauba charges nothing. Ever.
Install
pip install hauba
| Platform | Command |
|---|---|
| PyPI | pip install hauba |
| macOS / Linux | curl -fsSL https://hauba.tech/install.sh | sh |
| Windows | irm hauba.tech/install.ps1 | iex |
| Source | git clone https://github.com/NikeGunn/haubaa.git && cd haubaa && pip install -e ".[dev]" |
Optional extras
pip install hauba[all] # everything
pip install hauba[computer-use] # browser + screen automation
pip install hauba[voice] # voice mode (Whisper + TTS)
pip install hauba[web] # web dashboard (FastAPI)
pip install hauba[channels] # WhatsApp, Telegram, Discord
pip install hauba[services] # email (SMTP)
Requirements: Python 3.11+ — nothing else. No Docker. No Redis. No Kubernetes.
Quickstart
hauba init # pick provider, paste key — 30 seconds
hauba run "build a SaaS dashboard with auth" # it plans, you approve, it ships
$ hauba run "build a SaaS dashboard with auth"
Thinking...
Matched skills: full-stack-engineering, api-design, testing
Plan
----
1. Set up project structure
2. Implement JWT authentication
3. Build dashboard components
4. Add Stripe billing integration
5. Write test suite
6. Verify all tests pass
Proceed? [Y/n] y
Executing (5/6)...
[file] src/auth/handler.py CREATED
[file] src/billing/stripe.py CREATED
[bash] pytest tests/ -v PASSED (12 tests)
✓ Task completed — 8 files created, 12 tests passing, 0 errors
Session stays open. Keep building:
> "add rate limiting and CORS"
> "write a Dockerfile for production"
> "deploy to Railway"
See It Work
Run a task |
30-second setup |
24/7 daemon agent |
WhatsApp command center |
Compose AI teams |
Queue + Poll architecture |
Capabilities
Enterprise-Grade EnginePowered by GitHub Copilot SDK — the same production-tested runtime behind Copilot. Not a wrapper around ChatGPT. The real agentic backbone. |
BYOK — $0 Platform CostBring Claude, GPT-4, or run fully offline with Ollama. Your key, your models. Server owner pays nothing. You control every dollar. |
Air-Gap Ready100% offline with Ollama. No telemetry. No cloud dependency. Deploy in classified environments, air-gapped networks, or just your laptop. |
17 Built-in SkillsFull-stack, ML, video editing, data pipelines, DevOps, security — domain expertise as composable |
Ship via WhatsAppMessage your AI team from WhatsApp, Telegram, or Discord. Get results on your phone. 12 commands. Smart routing. Zero false positives. |
Zero-Hallucination LedgerSHA-256 hash chain + bit-vector + WAL. 5 verification gates. If the agent says it's done, it's cryptographically proven. |
How It Works
From idea to production in 3 steps.
| Step | You Do | Hauba Does |
|---|---|---|
| 1 | pip install hauba && hauba init |
Sets up workspace, loads 17 skills |
| 2 | Describe what you want in plain English | Plans architecture, shows you for approval |
| 3 | Approve the plan | Writes code, runs tests, fixes bugs, delivers |
Two modes of operation
Local CLI — you're at your computer:
hauba run "build me a landing page" → plans → you approve → builds → done
Queue + Poll — you're on your phone:
WhatsApp message → server queues it → your daemon picks it up
→ builds on YOUR machine with YOUR key → notifies you when done
┌─────────────────────┐ ┌─────────────────────┐
│ YOUR PHONE │ │ YOUR MACHINE │
│ │ │ │
│ WhatsApp │ │ hauba agent │
│ Telegram ────────┼────► │ ├─ poll │
│ Discord │ task │ ├─ claim │
│ │ queue │ ├─ build (BYOK) │
│ ◄─────────────────┼─────── │ └─ notify │
│ "Done! 8 files" │ result │ │
└─────────────────────┘ └─────────────────────┘
▲ │
│ hauba.tech │
└──── (relay) ────────┘
The server never sees your API key. It's a stateless relay.
Daemon Agent
Your AI engineer that runs 24/7. Never sleeps. Never takes PTO.
hauba agent --server https://hauba.tech
| Polls | Server every 10s for tasks from any channel |
| Claims | Auto-picks up queued tasks |
| Builds | Locally with your API key |
| Reports | Progress every 15s — live updates on your phone |
| Tracks cost | Alerts when spend exceeds $5 (configurable) |
| Auto-retries | Up to 3 attempts on failure |
| Remote cancel | Kill any task from WhatsApp mid-build |
Channels
WhatsApp · Telegram · Discord
Message your bot. Get results on your phone. 12 commands:
| Command | Effect |
|---|---|
| "build me a dashboard" | Queued for your daemon |
/tasks |
List tasks with live status |
/cancel <id> |
Cancel a running task |
/retry <id> |
Retry a failed task |
/web <url> |
Fetch + summarize any URL |
/email <to> <subj> | <body> |
Send email |
/reply <msg|off> |
Auto-reply mode |
/usage |
Cost and usage stats |
/status |
Health check |
/plugins |
Active plugins |
/feedback <msg> |
Send feedback |
/new |
Clear session |
Smart routing: build requests go to queue, chat gets instant responses.
hauba setup whatsapp # interactive Twilio wizard
Compose
docker-compose for AI agents. Define your team. Let them build.
# hauba.yaml
team: "my-saas"
model: "claude-sonnet-4-5-20250929"
agents:
architect:
role: "Senior Software Architect"
skills: [system-design, api-design]
backend:
role: "Backend Engineer"
skills: [fastapi, auth, database]
depends_on: [architect]
frontend:
role: "Frontend Engineer"
skills: [nextjs, tailwind, react]
depends_on: [architect]
devops:
role: "DevOps Engineer"
skills: [docker, ci-cd, monitoring]
depends_on: [backend, frontend]
output: "./output"
hauba compose up "build a SaaS with auth and Stripe billing"
Backend + frontend run in parallel. DevOps waits for both. Circular dependency detection built in.
Skills
17 built-in. Human-readable .md files. Install your own.
full-stack-engineering | Complete SaaS builds — 6-milestone playbook |
api-design-and-integration | REST, GraphQL, webhooks |
code-generation | Multi-language, any framework |
data-engineering | Pipelines, ETL, warehousing |
data-processing | Cleaning, transformation, analysis |
debugging-and-repair | Root cause analysis + fixes |
devops-and-deployment | Docker, CI/CD, cloud infra |
document-generation | Reports, docs, specs |
image-generation | Image creation + processing |
machine-learning | Training, eval, deployment |
refactoring-and-migration | Code modernization |
research-and-analysis | Deep research, synthesis |
security-hardening | Audits, OWASP, hardening |
testing-and-quality | Test suites, coverage, QA |
video-editing | Trim, effects, subtitles |
web-scraping | Data extraction at scale |
automation-and-scripting | Workflow automation |
hauba skill list # see all
hauba skill show full-stack # inspect
hauba skill install ./custom.md # add yours
hauba skill create my-skill # scaffold
TaskLedger
Zero trust. Full verification. Every task passes 5 cryptographic gates:
GATE 1 PRE-EXECUTION Ledger must exist before work begins
GATE 2 DEPENDENCY All upstream tasks VERIFIED
GATE 3 COMPLETION SHA256(prev_hash + task_id + artifact_hash)
GATE 4 DELIVERY Full gate check at every level
GATE 5 RECONCILIATION plan_count === ledger_count
Bit-vector state tracking. SHA-256 hash chain. Write-Ahead Log. Crash-safe. Tamper-evident.
Plugins
Extend Hauba with async Python plugins. 7 lifecycle hooks.
from hauba.plugins.base import BasePlugin
class MyPlugin(BasePlugin):
name = "my-plugin"
async def on_message(self, channel, sender, text):
if "urgent" in text.lower():
return "Prioritizing your task!"
return None
async def on_task_complete(self, task_id, output):
... # your logic
def create_plugin():
return MyPlugin()
hauba plugins install ./my_plugin.py
hauba plugins list
hauba plugins remove my-plugin
Hooks: on_load · on_unload · on_message · on_task_complete · on_task_queued · on_startup · on_shutdown
Supported Models
| Provider | Models | Offline |
|---|---|---|
| Anthropic | Claude Opus 4.6 · Sonnet 4.5 · Haiku 4.5 | — |
| OpenAI | GPT-4o · o3 | — |
| Azure | Any Azure OpenAI deployment | — |
| Ollama | Qwen 2.5 Coder · Llama 3 · any local model | Yes |
hauba config llm.provider anthropic
hauba config llm.model claude-sonnet-4-5-20250929
Architecture
┌───────────────────────────┐
│ CHANNELS │
│ WhatsApp · Telegram │
│ Discord · Voice · Web │
└─────────────┬─────────────┘
│
┌──────▼──────┐
│ SERVER │ hauba.tech
│ Task Queue │ relay only
│ Webhooks │ zero builds
└──────┬──────┘
│ poll 10s
┌──────▼──────┐
│ DAEMON │ your machine
│ CopilotSDK │ YOUR key
│ 17 skills │ TF-IDF match
│ TaskLedger │ SHA-256
└─────────────┘
Source layout
src/hauba/
├── cli.py # 20+ commands (Typer + Rich)
├── engine/copilot_engine.py # Core — GitHub Copilot SDK
├── daemon/
│ ├── agent.py # 24/7 polling daemon
│ └── queue.py # Task queue with TTL + retry
├── channels/
│ ├── whatsapp_webhook.py # WhatsApp bot (12 commands)
│ ├── telegram.py # Telegram
│ ├── discord.py # Discord
│ └── voice.py # Whisper STT + edge-tts
├── skills/
│ ├── loader.py # .md parser
│ └── matcher.py # TF-IDF matching
├── plugins/ # base · loader · registry
├── ledger/
│ ├── tracker.py # bit-vector + hash chain
│ ├── wal.py # Write-Ahead Log
│ └── gates.py # 5 verification gates
├── memory/store.py # SQLite + TTL + compaction
├── services/
│ ├── email.py # SMTP
│ └── reply_assistant.py # auto-reply
├── tools/ # bash · files · git · fetch · browser · screen
├── compose/ # hauba.yaml parser + DAG runner
├── core/ # config · constants · events
├── ui/ # Rich terminal + FastAPI web
└── bundled_skills/ # 17 .md files
Tech stack
| Runtime | Python 3.11+ · asyncio |
| AI Engine | GitHub Copilot SDK |
| CLI | Typer · Rich |
| Storage | SQLite (aiosqlite) |
| Validation | Pydantic v2 |
| HTTP | httpx |
| Logging | structlog (JSON) |
| Web | FastAPI · WebSocket |
| Channels | Twilio · python-telegram-bot · discord.py |
| Voice | Whisper · edge-tts |
| Browser | Playwright |
| Quality | ruff · pyright · pytest |
CLI reference — 20+ commands
CORE
hauba init setup wizard
hauba run "task" [--no-interactive] execute a task
hauba status config + last task
hauba doctor system diagnostics
hauba logs [--lines 50] view logs
hauba config <key> [value] get/set config
DAEMON
hauba agent [--server URL] start 24/7 daemon
hauba tasks [--server URL] list tasks
hauba cancel <task_id> cancel task
hauba retry <task_id> retry task
hauba usage cost summary
COMPOSE
hauba compose up "task" [-f file] run agent team
hauba compose validate [-f file] validate yaml
SKILLS
hauba skill list list skills
hauba skill show <name> inspect skill
hauba skill install <path> add skill
hauba skill create <name> scaffold skill
PLUGINS
hauba plugins list list plugins
hauba plugins install <path.py> add plugin
hauba plugins remove <name> remove plugin
CHANNELS
hauba setup whatsapp whatsapp wizard
hauba email <to> <subj> [body] send email
hauba web <url> fetch url
hauba reply <message|off> auto-reply
hauba feedback <message> feedback
UI
hauba voice voice mode
hauba serve [--port 8420] web dashboard
hauba api [--port 8080] REST API
hauba replay <id> [--speed 2] replay session
Deployment
Server runs at hauba.tech on Railway. Handles webhooks and task queuing. All builds execute on user machines.
Server environment variables
TWILIO_ACCOUNT_SID=...
TWILIO_AUTH_TOKEN=...
TWILIO_WHATSAPP_NUMBER=whatsapp:+1...
HAUBA_LLM_API_KEY=... # server chat only
HAUBA_SMTP_HOST=smtp.gmail.com # optional
Testing
pytest tests/ -v # 432 tests, 0 failures
| Matrix | |
|---|---|
| Ubuntu · macOS · Windows | All passing |
| Python 3.11 · 3.12 · 3.13 | All passing |
| ruff + pyright | All passing |
Contributing
git clone https://github.com/NikeGunn/haubaa.git && cd haubaa
pip install -e ".[dev]" && pytest tests/ -v
Conventional commits: feat: · fix: · refactor: · test: · docs:
See CONTRIBUTING.md.
MIT License — LICENSE
Stop hiring. Start shipping.
Website ·
PyPI ·
Issues ·
Releases
Built by Nikhil Bhagat and community · Powered by GitHub Copilot SDK
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hauba-0.7.1.tar.gz.
File metadata
- Download URL: hauba-0.7.1.tar.gz
- Upload date:
- Size: 189.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d67d0edeefbd4d6abde83c0e55f9e81385548f9fb36912f621ee2bd984e3641
|
|
| MD5 |
ad38864c9b819103ee36a5c5b8648ddf
|
|
| BLAKE2b-256 |
31751177a0ad0af429accb6953926a85f8b118c3d7a06b429a53757e0be5852f
|
File details
Details for the file hauba-0.7.1-py3-none-any.whl.
File metadata
- Download URL: hauba-0.7.1-py3-none-any.whl
- Upload date:
- Size: 187.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49326cec5562e87a23835e34e984ab23c9aa82cc3614ed3017b559fc3e2b878b
|
|
| MD5 |
41aa28ac365475ecf104201608fa3ea3
|
|
| BLAKE2b-256 |
85efbd0fd13f594c03bbd0d38de4d511c292ef48292f7b1f0aea3e9deaf2bfbc
|