🏢 OpenTower V1.0
5-Layer Multi-Agent Architecture for Zero-Intervention Closed-Loop Rate (ZICR)
From natural language intent to physical execution — an autonomous agent pipeline modeled as the "Empire State Building" of AI orchestration.
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Layer 1: DEFINITION │
│ company.yaml → CEO / Worker / QA roles, prompts, budgets │
├─────────────────────────────────────────────────────────────┤
│ Layer 2: ROUTING │
│ EMPBus (asyncio) — millisecond intent_type dispatch │
├─────────────────────────────────────────────────────────────┤
│ Layer 3: PROTOCOL │
│ EMPPacket JSON — trace_id, action, payload, token_budget │
├─────────────────────────────────────────────────────────────┤
│ Layer 4: AGENTS │
│ CEO (decompose) → Worker (execute) → QA (verify) │
├─────────────────────────────────────────────────────────────┤
│ Layer 5: ACTIONS │
│ shell_execute · github_create_issue · (extensible) │
└─────────────────────────────────────────────────────────────┘
Quick Start
# Install
cd OpenTower
pip install -e ".[dev]"
# Configure LLM (default: LM Studio at localhost:1234)
export OPENAI_BASE_URL=http://localhost:1234/v1
export OPENAI_API_KEY=no-key
# Run
python -m opentower.main
Message Flow
User Input
│
▼
[CEO] ──LLM──> decompose into tasks
│
▼ (task_assign × N)
[Worker] ──Action Registry──> execute
│
▼ (task_result)
[QA] ──static + LLM──> APPROVE / REJECT
│ │
▼ (retry ≤ 2×)
Output
Project Structure
company.yaml # Organization definition (3 agent nodes)
opentower/
├── schema/ # Layer 1 & 3: YAML parser + EMP protocol
├── bus/ # Layer 2: asyncio event bus
├── agents/ # Layer 4: CEO / Worker / QA
├── actions/ # Layer 5: shell, GitHub (extensible)
├── memory/ # SQLite state wall (full trace log)
├── llm/ # OpenAI-compatible client
└── main.py # REPL entry point
Requirements
- Python ≥ 3.11
- An OpenAI-compatible LLM endpoint (LM Studio, Ollama, or cloud)
License
MIT
Metadata
Release files for opentower 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| opentower-1.0.0.tar.gz | 21.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| opentower-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.1 kB
Release files / opentower-1.0.0.tar.gz
| Download URL | opentower-1.0.0.tar.gz |
|---|---|
| Size | 21.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dbe247e709af74bed2262a6d8860f9bd6d30c1a6a9006bcb75d97a2bb19a4c74
|
|
BLAKE2b-256 checksum How to use checksums |
9b0b89990360bc20f30fb70e6607bb3134da582346aff2a0bffa7c31fc87fcac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / opentower-1.0.0-py3-none-any.whl
| Download URL | opentower-1.0.0-py3-none-any.whl |
|---|---|
| Size | 24.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0e4bc8693c024f1cf0873d2d6865f1a23d4372a2c8df02377834fa1d2f660a73
|
|
BLAKE2b-256 checksum How to use checksums |
f4b24cbb90f9871e28944b5dafc6fa32cd7da267b10da4ba10ffb30785c46307
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|