packages / zob-harness
extension Tool providers

zob-harness

A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.

No reviews yet

Install

$ pi install npm:zob-harness

Installs from npm into ~/.pi/agent/. Add -l for project-local (.pi/). Manage with pi list / pi update / pi remove.

What this package can reach

Detected automatically from the source at version 0.17.0. This describes access, not safety — you decide whether it's appropriate for what the package claims to do.

  • 🤖
    Behavior — Changes how the agent thinks Modifies the system prompt, injects messages, or rewrites conversation context.
  • Commands — Runs shell commands Spawns processes on your machine.
  • 🔑
    Credentials — Handles your API keys Reads or passes provider credentials. Highest-trust capability there is.
  • 📁
    Files — Reads files outside your project Touches paths beyond the working directory, such as your home folder.
  • Intercepts tools — Can block or rewrite tool calls Subscribes to tool_call/tool_result/input. Can change a command after you approved the one displayed.
  • Keystrokes — Reads raw terminal input Hooks ui.onTerminalInput, so it sees what you type. Legitimate for shortcut handling; the same access a keylogger needs.
  • 🌐
    Network — Talks to the internet Makes outbound network requests. Check the destinations are ones you expect.
  • Subagents — Spawns agents or sessions Runs additional agents. Ask whether it caps iterations and spend.
  • 🔀
    Tool control — Can switch pi's tools on and off Calls setActiveTools, so it can disable built-ins — including safety-relevant ones.
  • 🔧
    New tools — Adds model-callable tools Gives the agent new abilities. Additive and visible, unlike an override.
  • UI — Draws its own interface Renders widgets, footers, dialogs or full-screen views.

What it actually did when run

observed

Loaded in a sandbox with no network, a read-only filesystem and a recording stand-in for pi's API. This is what it called — not what the source suggests it might.

Tools registered get_goalget_goal_todoshandoff_goal_todoadd_goal_todoadd_goal_todosupdate_goal_todoresolve_goal_todocomplete_goal_todoblock_goal_todosplit_goal_todovalidate_goal_todo_claimaccept_goal_todo_claimrecover_goal_todo_delegationreject_goal_todo_claimimport_factory_todosimport_orchestration_todosimport_chain_todoscreate_goalresume_goalpropose_goal_completionrecord_goal_oracleupdate_goalzob_delegation_catalogdelegate_agentdelegate_taskget_delegation_runawait_delegation_runorchestrate_runchain_runzpeer_askzpeer_replyzob_coms_sendzob_coms_ackzob_coms_statuszob_coms_replyzob_coms_listzob_coms_getzob_coms_awaitzob_goal_room_sendzob_goal_room_listzob_governed_request_extractzob_workspace_claimzob_workspace_releasezob_workspace_claims_listzob_worker_pool_planzob_worker_pool_statuszob_worker_pool_owner_requestzob_worker_pool_owner_decisionzob_merge_candidate_submitzob_merge_queue_decidezob_merge_queue_listzob_zcommit_runzob_zteam_hot_addzob_zteam_removezob_worklistzob_coms_readinesszob_mission_control_snapshotzob_mission_control_propose_commandzob_context_readinesszob_context_searchzob_context_validate_scopezob_context_writeback_proposalzob_read_fullzob_receive_fullzob_compute_previewzob_compute_resolve_profilezob_compute_plan_workflowzob_compute_validate_profilezob_compute_write_profile_reportszob_project_dna_readinesszob_project_dna_plan_workflowzob_project_dna_queryzob_project_dna_federated_queryzob_project_dna_writeback_proposalzob_plan_launchzob_autonomous_dry_runzob_autonomous_readonly_smokezob_autonomous_validate_runzob_autonomous_validate_smokefactory_quarantine_reviewfactory_quarantine_activatefactory_quarantine_verify_activationfactory_run

Events subscribed agent_endbefore_agent_startinputmessage_endmessage_startmessage_updatemodel_selectsession_before_compactsession_before_treesession_compactsession_shutdownsession_startsession_treetool_calltool_execution_endtool_execution_startturn_endturn_start

APIs called appendEntrygetContextUsagehasPendingMessagesisIdlemodelRegistry.getApiKeyAndHeadersmodelRegistry.getAvailablemodelRegistry.getAvailable.filtermodelRegistry.getAvailable.filter.mapmodelRegistry.getAvailable.filter.map.sortmodelRegistry.getAvailable.filter.map.sort.slicenewSessionregisterCommandregisterMessageRendererregisterShortcutregisterToolsessionManager.getBranchsessionManager.getSessionFileui.customui.notifyui.setEditorText

4 calls the source scan did not predict

modelRegistry.getAvailable.filter · modelRegistry.getAvailable.filter.map · modelRegistry.getAvailable.filter.map.sort · modelRegistry.getAvailable.filter.map.sort.slice

Reached through a value the scan could not follow — passed as an argument, stored on another object, or returned by a helper.

Run against version 0.17.1 on 2026-08-02. Registration-time behaviour under default settings; other configurations may differ.

Review before you install. pi packages run with your full system permissions. Check the source, pin versions, and prefer authors you trust.

Reviews

0 published

Sign in with GitHub to write a review, reply, or vote.

No reviews yet — be the first.

More in Tool providers

  • @juicesharp/rpiv-web-tools — Pi extension. Web search and fetch for the model with pluggable providers (Brave, Tavily, …
  • pi-web — Web UI for pi that keeps sessions alive in real workspaces — run and monitor pi from the b…
  • @vaayne/pi-web-tools — Pi extension for web fetching and search capabilities
  • @firstpick/pi-utils — Shared utilities for Firstpick Pi extension packages.