Skip to content

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 / CanonicalPackageHash
  • buildManifest / BuildManifest
  • writeManifest / WriteManifest
  • scaffoldPackage / ScaffoldPackage
  • PackageAttestationVerifier
  • 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.

# Python
decision = make_decision(route_input, registry=registry, registry_client=client)
# TypeScript
const decision = makeDecision(routeInput, { registry, registryClient: client });
// Go
decision := 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:

ScreenWhat it shows
StatusConnection state, server info grid, agent count, active jobs, recent refusals, connected agents
FeedLive dispatch feed (up to 500 events) with filter chips, pause/resume, and expandable work tickets
CrewEnrolled workers, catalog species, status badges, blast tier, daily dispatch/failure stats
AlertsActive alerts by severity — acknowledge, jump to Feed or Crew directly from each alert
CoordinationLive agent roster, Kanban task board, SSE event feed, operations logs, resource lock list
ProfileGitHub identity, tier badge, namespaces grouped by x.* / org.*, account info, sign out
Enroll4-step enrollment wizard — Identity → Business Logic → WCP Policy → Review + scaffold download
ConfigHall 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:

CheckWhat it verifies
ConnectivityRegistry reachable
AuthSession token valid
Binary IntegrityHall Server binary hash matches registry record
Hall ServerSidecar process running and responding
DatabaseLocal DB accessible and schema current
ConfigurationRequired 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:

  1. Click “Forgot passphrase?” on the unlock form
  2. A 6-digit reset code is sent to your registered email (valid 15 minutes)
  3. Enter the code and set a new passphrase
  4. 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 → think when no alerts, alert when alerts are present
  • Enrollment wizard → celebrate on 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 registry
  • worker_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:

  • agents table — agent registry with heartbeat tracking
  • tasks table — WCP-governed task queue
  • coord_events table — SSE event log
  • resource_locks table — distributed resource locking
  • 7 coordination routes + GET /events SSE 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:

Terminal window
pyhall skill init # scaffold a new skill
pyhall skill build # package a skill for distribution
pyhall skill certify # sign the skill manifest
pyhall skill publish # publish to the skills registry
pyhall skill install # install a skill by ID
pyhall skill verify # verify a locally installed skill

Skills 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

Areav0.2.xv0.3.0
Hall Monitor screens7 (Status, Feed, Crew, Alerts, Profile, Enroll, Config)9 (+ Coordination, + Doctor)
Binary attestationNot presentSHA-256 badge on Status screen
Passphrase resetNot presentFull forgot-passphrase email flow
Worker animationsNot present21-keyframe mascot widget
MCP serversNot presentConfig screen: add / ping / remove
Coordination backendNot presentAgents + tasks + SSE + resource locks
POST /api/routeNot presentLive on Hall Server
GET /openapi.jsonNot presentLive on Hall Server
Skills CLINot presentpyhall skill init/build/certify/publish/install/verify
Update checkerNot presentSHA-256 verified updater
EULANot presentLICENSE-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

Terminal window
pip install --upgrade pyhall-wcp
npm install @pyhall/core@0.3.0 @pyhall/cli@0.3.0
go get github.com/pyhall/pyhall-go@v0.3.0