What's New in v0.3.0
SDK Parity — Python, TypeScript, Go
v0.3.0 completes the API surface across all three SDKs. Every feature available in the Python SDK is now available in TypeScript and Go.
Attestation module — full-package SHA-256 attestation is now implemented in all three SDKs:
canonicalPackageHash/CanonicalPackageHashbuildManifest/BuildManifestwriteManifest/WriteManifestscaffoldPackage/ScaffoldPackagePackageAttestationVerifier- All 5 deny codes:
ATTEST_MANIFEST_MISSING,ATTEST_MANIFEST_INVALID,ATTEST_SIGNATURE_MISSING,ATTEST_SIGNATURE_INVALID,ATTEST_HASH_MISMATCH
Registry Auto-Wiring in make_decision()
Passing a RegistryClient to make_decision() (Python), makeDecision() (TypeScript/Go) now automatically:
- Forces
require_worker_attestation: true - Wires the hash callback from the prefetch cache
- Records the routing decision for telemetry flush
This makes attestation non-bypassable when a registry client is present. No separate configuration required.
# Pythondecision = make_decision(route_input, registry=registry, registry_client=client)
# TypeScriptconst decision = makeDecision(routeInput, { registry, registryClient: client });
// Godecision := wcp.MakeDecision(routeInput, wcp.RouterOptions{ Registry: registry, RegistryClient: client,})Decision Count Telemetry
Every ALLOW routing decision is counted locally and flushed to the registry every 60 seconds during the standing receipt check. This powers the live stats on pyhall.dev.
What stays local — always:
make_decision()is synchronous and never touches the network- Worker capability lists and routing rules
- PolicyGate evaluation results
- All worker configuration and secrets
What touches the registry — every 60 seconds:
- Standing receipt:
GET /api/v1/verify/:worker_id— confirms the worker is still attested and not banned - Decision counts:
POST /api/v1/telemetry/decisions— per-worker-per-day counts, batched
See Telemetry & Privacy for the full data boundary specification.
Hall Monitor v0.3.0
Hall Monitor is the desktop control plane for your Hall Server — a Tauri v2 app for macOS, Windows, and Linux. v0.3.0 is a major expansion: two new screens, binary attestation, worker mascot animations, passphrase reset, MCP server management, and a fully integrated Doctor mode.
All 8 Screens
Hall Monitor now ships with 8 main screens:
| Screen | What it shows |
|---|---|
| Status | Connection state, server info grid, agent count, active jobs, recent refusals, connected agents |
| Feed | Live dispatch feed (up to 500 events) with filter chips, pause/resume, and expandable work tickets |
| Crew | Enrolled workers, catalog species, status badges, blast tier, daily dispatch/failure stats |
| Alerts | Active alerts by severity — acknowledge, jump to Feed or Crew directly from each alert |
| Coordination | Live agent roster, Kanban task board, SSE event feed, operations logs, resource lock list |
| Profile | GitHub identity, tier badge, namespaces grouped by x.* / org.*, account info, sign out |
| Enroll | 4-step enrollment wizard — Identity → Business Logic → WCP Policy → Review + scaffold download |
| Config | Hall URL, polling interval, MCP servers, notifications, security (passphrase change), data export |
Doctor is accessible from the navigation bar as a utility screen and runs automatically when opened.
Coordination Screen (new in v0.3.0)
The Coordination screen is the multi-agent operations center:
- Live Agent Roster — all enrolled agents with status (active / idle / offline) and last heartbeat
- Kanban Task Board — todo / in_progress / done columns with drag-to-reassign; list view toggle
- SSE Event Feed — real-time stream from the Hall Server, showing tool_call / heartbeat / connected events as they happen
- Operations Logs — browse coord log files (agent_comms / agent_activity / command_trace), view last N lines, export, live append
- Resource Lock List — active WCP resource locks: lock_id, resource_id, held_by, expires_at
All coordination endpoints require authentication.
Doctor Screen (new in v0.3.0)
Doctor runs 6 health checks against your full pyhall stack and auto-runs when you open the screen:
| Check | What it verifies |
|---|---|
| Connectivity | Registry reachable |
| Auth | Session token valid |
| Binary Integrity | Hall Server binary hash matches registry record |
| Hall Server | Sidecar process running and responding |
| Database | Local DB accessible and schema current |
| Configuration | Required fields present, no conflicting settings |
Overall status shows OK / WARN / FAIL. The export button downloads hall-monitor-diagnostics-<timestamp>.json — no tokens or secrets are included in the bundle.
Binary Attestation Badge
The Status screen shows a live attestation badge next to Hall Server info:
● build verified— binary hash matches the pyhall.dev registry record✕ TAMPER DETECTED — update Hall Monitor— hash mismatch (shown in red)○ build unverified— registry check not yet completed
The Hall Server binary is a PyInstaller-compiled sidecar. Its SHA-256 hash is verified against the registry on startup and displayed in the Status info grid.
Passphrase Reset via Email (new in v0.3.0)
The passphrase gate now includes a full forgot-passphrase flow:
- Click “Forgot passphrase?” on the unlock form
- A 6-digit reset code is sent to your registered email (valid 15 minutes)
- Enter the code and set a new passphrase
- Session continues without re-login
The passphrase is never sent over the network. The reset token is single-use and server-verified.
Worker Mascot Animations
Hall Monitor ships with an animated worker mascot widget. 21 CSS keyframe animations are keyed to app state:
- Login gate →
float - Status screen → state machine (online / offline / error)
- Alerts screen →
thinkwhen no alerts,alertwhen alerts are present - Enrollment wizard →
celebrateon successful enroll
The widget is a standalone JS module and does not depend on any framework.
App State Machine
The app follows a strict 4-state lifecycle:
OFFLINE → LOCKED → READY → ONLINE- OFFLINE — Hall Server not running
- LOCKED — Hall Server running, passphrase not yet entered
- READY — Authenticated, not polling
- ONLINE — Polling active, workers live
Login (GitHub OAuth) does not require Hall Server to be running. The desktop polls api.pyhall.dev directly. Session tokens are held in memory only — never persisted to disk.
MCP Server Management (Config Screen)
The Config screen now manages Model Context Protocol servers:
- Add HTTP or stdio MCP servers
- Ping each server to verify connectivity
- Remove servers
- Dynamic workers are spawned via MCP when a capability request matches a registered MCP server
Enrollment Wizard — Scaffold Download
The 4-step Enroll wizard generates and downloads two files on completion:
registry_record.json— the worker manifest, ready to submit to the registryworker_logic.py— fully scaffolded 8-section worker logic file with stubs for every required section
Blast score is auto-calculated from profile base + capability weights + control offsets (0–100 scale).
Update Checker
Hall Monitor checks for updates at startup. If a newer version is available, a notice appears on the Status screen. Updates are verified by SHA-256 before being applied.
Hall Server — New in v0.3.0
POST /api/route
Hall Server now exposes POST /api/route — a direct HTTP dispatch endpoint. Agents can route work to Hall Server over HTTP without using the SDK.
GET /openapi.json
GET /openapi.json returns the full OpenAPI 3.0 spec for the Hall Server API. Use it to generate client libraries or inspect the API surface.
Orchestrator Backend
The coordination backend is now built into Hall Server:
agentstable — agent registry with heartbeat trackingtaskstable — WCP-governed task queuecoord_eventstable — SSE event logresource_lockstable — distributed resource locking- 7 coordination routes +
GET /eventsSSE endpoint
EULA
LICENSE-HALL-MONITOR ships in the binary distribution. Hall Monitor is source-available for personal and open-source use. Commercial use requires a Pro account.
Skills CLI — pyhall skill (new in v0.3.0)
Both the TypeScript CLI (@pyhall/cli) and Go CLI (pyhall) now ship the skill subcommand:
pyhall skill init # scaffold a new skillpyhall skill build # package a skill for distributionpyhall skill certify # sign the skill manifestpyhall skill publish # publish to the skills registrypyhall skill install # install a skill by IDpyhall skill verify # verify a locally installed skillSkills are pre-certified worker packages distributed through the pyhall registry with publisher attestation.
Registry Stats Endpoint
GET /api/v1/stats on the pyhall registry returns live counts of namespaces, attested workers, and routing actions. The pyhall.dev landing page displays these live.
What Changed from v0.2.x
| Area | v0.2.x | v0.3.0 |
|---|---|---|
| Hall Monitor screens | 7 (Status, Feed, Crew, Alerts, Profile, Enroll, Config) | 9 (+ Coordination, + Doctor) |
| Binary attestation | Not present | SHA-256 badge on Status screen |
| Passphrase reset | Not present | Full forgot-passphrase email flow |
| Worker animations | Not present | 21-keyframe mascot widget |
| MCP servers | Not present | Config screen: add / ping / remove |
| Coordination backend | Not present | Agents + tasks + SSE + resource locks |
| POST /api/route | Not present | Live on Hall Server |
| GET /openapi.json | Not present | Live on Hall Server |
| Skills CLI | Not present | pyhall skill init/build/certify/publish/install/verify |
| Update checker | Not present | SHA-256 verified updater |
| EULA | Not present | LICENSE-HALL-MONITOR |
No breaking changes to make_decision(), RouteInput, or RouteDecision. The registry_client parameter is additive — existing code works unchanged.
Upgrade from v0.2.x
pip install --upgrade pyhall-wcpnpm install @pyhall/core@0.3.0 @pyhall/cli@0.3.0go get github.com/pyhall/pyhall-go@v0.3.0