← All notesENGINEERING2026-05-205 min read

How the Hubzoid package works: markdown in, agent out.

Hubzoid is an open-source Python package. You write markdown, run one command, and a production agent comes up behind an OpenAI-compatible API. Here is what happens between pip install and a working hub.

The runtime behind every Hubzoid engagement is open source. It is a Python package called hubzoid, MIT-licensed, on PyPI. Run pip install hubzoid and you have the same substrate we deploy inside a customer's perimeter. This note walks through what the package actually does.

The core idea is that an agent is a folder of markdown, not a codebase. You do not write Python to define behaviour. You write an AGENTS.md file, and the package turns it into a running agent.

01. Define. An agent is a markdown file with YAML frontmatter — a name, a description, an optional model — followed by the system prompt as plain markdown. That is the whole contract. A hub is a folder of these files plus a few well-known subfolders.

02. Scaffold. After pip install hubzoid, the command hubzoid init demo-hub writes a starter hub: a root AGENTS.md, an agents/ folder, an empty .env. Nothing to wire by hand.

03. Run. hubzoid run demo-hub reads the folder, builds the agent, and serves it. A chat interface comes up at localhost:3080. The same command in production serves the customer's hub.

Around that core, the package bundles four layers. Each is a proven open-source component rather than something we invented.

01. Open WebUI is the chat surface operators see, white-labelled to the customer's brand and domain.

02. A FastAPI bridge exposes an OpenAI-compatible HTTP API. Any client that speaks /v1/chat/completions can plug in, with no Hubzoid-specific SDK required.

03. The agent runtime — the Claude Agent SDK or the OpenAI Agents SDK — handles sub-agents, tool calls, and handoffs.

04. LiteLLM routes prompts to whichever provider the customer holds a contract with: Anthropic, OpenAI, OpenRouter, or a local Claude CLI. Provider-agnostic by design, so there is no lock-in to one model vendor.

Three subfolders extend an agent without code. The agents/ folder holds sub-agents, each its own markdown file. The skills/ folder holds on-demand playbooks as SKILL.md files — a slash command the agent invokes when a task matches. The knowledge/ folder holds reference documents the agent reads at inference time.

Connectors follow the same open-standard approach. The package speaks the Model Context Protocol, so a customer's existing systems — ERP, drives, chat — are wired in as MCP servers. Read-only by default; write access is explicit and audited.

A handful of tools ship in the box: file read and write, web search, a memory pair of remember and recall, and Jinja templating for generated documents. Enough to be useful on the first run, and all visible in the source.

Why open source matters here. The runtime executes inside the customer's perimeter, against the customer's data. A security team should be able to read every line of what runs there. Because the package is on GitHub under an MIT licence, they can — and because the same package powers our engagements, what they audit is exactly what ships.

The package is the floor, not the ceiling. The work of an engagement is the markdown above it: the world models, the agent definitions, the policy thresholds. The package only guarantees that this markdown becomes a running, observable agent the same way every time.

DEPLOY · ONE QUARTER

One quarter to deploy. A company that runs on agents.