Configuration

Pi Sych keeps credentials, provider choices, model identifiers, and personal examples outside the public package. Native Pi configuration owns provider authentication and MCP transport; Pi Sych configuration owns custom compaction policy, an optional completion reassessment, and the local literature path.

Layered Pi Sych settings

Pi Sych reads the global configuration from <Pi configuration root>/pi-sych/config.json and independently reads an optional project override from <projectRoot>/.pi/pi-sych/config.json. Global settings are applied first and project values override only keys they provide; compaction fields merge independently. Unknown keys are rejected.

The version 2 shape is:

{
  "version": 2,
  "compaction": {
    "custom": true,
    "thresholdTokens": 150000
  },
  "completionReassessment": false,
  "literatureDatabase": "library.sqlite"
}

compaction.custom controls whether the Pi Sych workbench supplies its task-centred summary. When enabled, the proactive threshold defaults to 150,000 context tokens and triggers only at a safe settled/idle boundary. Pi may compact earlier when its own context-window safety rules require it; when the Pi Sych resource is loaded, it supplies the custom summary for those requests as well. thresholdTokens is not an alias for Pi’s reserveTokens. Set custom to false to leave compaction to Pi’s native behavior.

completionReassessment defaults to false. When enabled, the workbench adds one hidden reassessment at Pi’s final actionable agent_before_settle boundary after a completed run, only when there are no pending messages and Pi can continue. If the reassessment finds authorized work, Pi makes one continuation; if complete or genuinely blocked, it stops. A guard prevents repeated reassessments for that user message. This is separate from the 150,000-token compaction trigger and does not expand the existing request’s authorization.

literatureDatabase may be an absolute path or relative path. A relative global value is resolved from the global Pi Sych config directory; a relative project value is resolved from the project root and overrides the global library only for that project. If neither configuration supplies a value, Pi Sych uses <global Pi Sych config directory>/literature.sqlite. An existing project-local LITERATURE.sqlite takes precedence. The database is always opened read-only.

See v7 to v8 migration for obsolete v7 keys and native Pi replacements.

Worker model catalogue and setup

Workers use the conventional private catalogue <global Pi Sych config directory>/worker-models.json. Its role names, model identifiers, optional cost, and notes are user-maintained. For example:

{
  "default": "mid coder",
  "models": {
    "mid coder": {
      "model": "provider/model",
      "cost": "low",
      "notes": "Routine edits and tests."
    }
  }
}

dispatch_worker looks up the exact requested modelRole, or the catalogue’s default role. Cost and notes are context for the supervisor; the runtime does not rank models or invent fallbacks. The tool also accepts optional inline workerInstructions for guidance specific to one launch. Pi Sych copies the configured worker agent directory to private temporary state and writes the supplied text to a launch-scoped AGENTS.override.md, preserving existing worker instructions before it. Pi loads this through native AGENTS discovery; project and ancestor AGENTS files retain Pi’s normal precedence. The shared worker directory and project files are not modified. Omit the option to use the configured worker directory unchanged with no injected guidance. The model catalogue is needed to dispatch a worker, not merely to start Pi Sych for direct project work.

A project_status check also reports the current supervisor model by exact provider/model match against this catalogue, without monitoring model changes. For a match it reports the role plus any defined cost and notes fields, without repeating the model ID. For no match or no catalogue it reports role=none; not in catalog. If Pi exposes no active model it reports role=none; model unavailable. Neither case is an error.

Initialize the conventional <global Pi Sych config directory>/worker-agent directory once with the packaged bootstrap script. If a dispatch finds it uninitialized, dispatch_worker reports the bootstrap command. Ordinary workers have only their explicit tools. Remote retrieval is an explicit per-dispatch request and uses native Pi MCP/codemode configuration in that worker agent directory; Pi Sych does not copy or merge the supervisor’s configuration.

Worker context choice

dispatch_worker.contextMode defaults to clean. Use clean when the explicit assignment, files, and selected skills provide enough context. Use trajectory when prior supervisor conversation materially improves the bounded assignment.

Context need does not determine who must execute the task. The supervisor can explore or plan first, write relevant state into a plan, TODO, brief, or context file, and then delegate a clean task. Conversely, a simple direct request may be faster and clearer to complete in the supervisor without delegation.

Trajectory mode requires a persisted exact tool-call boundary, creates a private native branch immediately before the assistant entry containing that dispatch, and fails clearly rather than falling back to clean. Context mode does not alter worker tools, permissions, model, skills, files, or research access.

literature_search is available directly to the supervisor. A dispatched worker also receives it when its selected skills include the exact research selector. Capability inspection checks whether the resolved database is absent, compatible with required v7 columns, or degraded; it does not verify access to underlying sources. Incompatible schemas report missing columns and the rebuild/migration requirement. See the v7 literature database migration guide.

The supported v7 schema stores canonical metadata in papers and uses an external-content FTS5 table named papers_fts:

CREATE TABLE papers (
  id INTEGER PRIMARY KEY, filepath TEXT, directory TEXT,
  filename TEXT, year INTEGER, item_type TEXT,
  creators_json TEXT, title TEXT, abstract TEXT,
  topic_tags TEXT, doi TEXT
);
CREATE VIRTUAL TABLE papers_fts USING fts5(
  filepath, title, abstract, topic_tags, doi,
  content='papers', content_rowid='id'
);

Maintain the external-content index outside Pi Sych; rebuild it after population with INSERT INTO papers_fts(papers_fts) VALUES ('rebuild');. Relative source paths resolve against the database directory. Creator-shape and SQL-null rules are specified in the public contract; malformed returned rows fail the query rather than returning partial results. Pi Sych performs shallow structural validation but does not infer creators, validate CSL semantics, format citations, or migrate older schemas.

Search syntax is native FTS5. Useful query forms include quoted phrases, AND/OR, and column filters such as title:, doi:, and topic_tags:. Search results are discovery metadata and source-path handoffs, not source verification or evidence of collection completeness. Inspect the underlying source when exact wording, method, result, quotation, correction status, or precise metadata matters. A local source path can be inspected with an available PDF/document tool without loading an entire document into model context.

Project canonical paths

SYNC.json version 2 records tracked artifacts, fingerprints, and explicit dependency edges. It may relocate the project root and override canonical paths for project, agents, style, evidence, decisions, todo, and inbox.

Artifact paths remain project-local. Worker context files may use a project-relative path or an explicitly selected readable absolute path. Worker-reported files and observed project changes are reported as project-relative paths. Configured canonical paths are trusted project configuration and may be external; path handling is not a sandbox boundary.

Skill customization

Pi Sych exposes seven umbrella skills: project, write, analyze, code, review, research, and automation. Their task recipes use relative links to local modules and shared methods.

To customize one durably, copy its umbrella directory, its routed shared methods, and every routed module under other umbrellas, preserving their relative paths, into one of:

<Pi configuration root>/skills/
.pi/skills/
.agents/skills/

Preserve the relative layout so recipe links continue to resolve. Named workers search .pi/skills/, then .agents/skills/, then the global Pi root’s skills/, then packaged skills. Edit local modules/*/examples.md or shared _methods/*/examples.md first. Change guidance or task-recipe order only when you intentionally want different behavior. A project STYLE.md should record durable local deltas rather than copy package prose doctrine. Writing workers load skills/write/DEFAULT_STYLE.md as a package baseline and STYLE.md, when present, as a project override; explicit user, venue, renderer, accessibility, and evidence requirements remain higher precedence. These style resources are loaded only for workers selected with the write skill.

Native Pi resource and MCP controls

Use native Pi configuration and pi config to select independently loadable extensions and other Pi resources. Plannotator remains a separately selectable human-review adapter. Native Pi owns MCP transport and authentication: configure MCP in the worker agent directory, setting PI_CODING_AGENT_DIR=<global Pi Sych config directory>/worker-agent when running pi mcp add, pi mcp list, pi mcp login, or pi mcp logout. Use /mcp in a worker session to inspect its servers. Pi Sych does not maintain an MCP client or status/configuration wrapper. Remote research is explicit per worker dispatch; ordinary workers do not receive MCP or codemode. See the migration guide.

An optional user-maintained STACK.md at ~/.pi/agent/STACK.md may record durable computer/environment facts for computer-use work. It is machine context, not project software-stack state or capability availability; runtime state still determines what can be used now.