Documentation

Everything you need to master PorkiCoder, including Terminal Overlord for supervising Claude Code, Codex, and Grok Build, Consult MCP for bounded second opinions and trusted research sync, Worktree Fan-Out, AGENT HOG, and keyboard shortcuts.

The Marquee Feature

Consult MCP — A Second Opinion, Already Wired In

Open Claude Code, Codex, or Grok Build in a PorkiCoder terminal and it gets seven focused consult tools. Three use local subscription CLIs — consult_claude_code, consult_codex, and consult_grok_build — while consult_kimi3, consult_kimi3_baseten, consult_gemini, and consult_gpt5 are explicitly approved API calls. The MCP wiring is automatic; local workers use the CLI installation and login already on your Mac.

Why a different lineage? Because re-asking the same model the same question is theater — it doesn't reconsider, it re-confirms, echoing its own training right back at you with extra confidence. Picture Claude several turns deep into a stubborn bug, the same fix failing the same way. Instead of you opening another tab to play telephone, Claude can sanity-check a refactor, break a multi-turn debugging stalemate, fact-check a claim, get UI & design help, do deep research, or reason over a large context — and get back an answer it didn't already believe. You stay in flow; Claude breaks the stalemate.

consult_claude_code — Claude Code subscription
Launches your locally installed Claude Code CLI with its existing subscription login. Prefer it from a Codex or Grok Build master when you want an Anthropic-lineage review of bounded context. You can pin the exact claude-fable-5 runtime with max effort instead of inheriting mutable CLI defaults; this optional consult consumes your Claude subscription quota and never falls back to a paid API. After updating PorkiCoder, open a fresh master terminal session so its cached MCP schema includes Fable 5. Stream activity resets a five-minute inactivity watchdog, progress updates appear every 30 seconds when the client supports them, and a separate 30-minute ceiling stops a genuinely stuck review.
consult_codex — ChatGPT/Codex subscription
Launches your local Codex CLI in a read-only sandbox and returns only its advisory answer. Prefer it from Claude Code or Grok Build when you want an OpenAI-lineage implementation or review opinion.
consult_grok_build — Grok Build subscription
Launches your signed-in Grok Build CLI with tools denied. Prefer it from Claude Code or Codex when you want a third-lineage challenge. It receives the same bounded question and optional context, with no repository, shell, web, MCP, plugin, or persistent-session access.
consult_kimi3 — Kimi K3 API
An explicitly approved Baseten-backed Kimi K3 second opinion for long-context or code-heavy questions. This installed-client compatibility name uses PorkiCoder's authenticated Baseten route and never reads a terminal provider key. The route makes one upstream attempt because older clients already own their bounded retry loop. Extended reviews give Baseten 29 minutes, wait up to 30 minutes in the MCP provider, and reserve 31 minutes in Nginx and Codex so inner timeouts remain visible. A local MCP heartbeat appears every 15 seconds; it proves the tool is alive but does not claim a new upstream stream chunk.
consult_kimi3_baseten — Kimi K3 via Baseten
The explicit Baseten name for the same Kimi K3 provider. The production Baseten credential remains server-side, the MCP provider dispatches once, and backend-owned capacity controls and bounded retries prevent replay multiplication. Requests use at most 65,536 completion tokens, matching the backend cap, and never fall back to another inference provider.
consult_gemini — Gemini 3.1 Pro API
An explicitly approved Google API consult for UI, design, fact-checking, research, and large-context reasoning. This is separate from the tightly capped Gemini 3.5 Flash-Lite terminal-naming request.
consult_gpt5 — GPT-5.5 API
An explicitly approved maximum-reasoning API consult for the hardest questions. It is metered separately from local subscription quota and never starts without the paid-call consent field.
Automatic MCP Wiring — Your CLI Logins Stay Yours
The bundled porkicoder-consult MCP server writes itself idempotently into Claude Code's ~/.claude.json, Codex's ~/.codex/config.toml, and Grok Build's ~/.grok/config.toml. It manages only its own command, arguments, and bridge environment, preserves unrelated servers and settings, and respects an intentionally disabled Grok entry. Codex entries are compared by meaning, so harmless TOML quoting, whitespace, comments, key order, or a trailing argument-array comma do not cause a write. Grok entries also survive Grok's own reformatting: a pretty-printed managed argument array is recognized and canonicalized so stale helper paths migrate to the packaged app, while any unfamiliar value leaves the whole file untouched. Start a fresh master session after PorkiCoder launches, after installing a worker CLI, or after changing its login. Local workers require their own installed CLI and active subscription login; PorkiCoder never receives or copies those subscription credentials.
Managed Kimi K3 in Stock Grok Build — New in 2.17.39
PorkiCoder also manages a selectable kimi-k3-baseten model in stock Grok Build. It uses the authenticated https://server.porkicoder.com/v1 gateway and the existing mode-0600 local token bridge; the production Baseten credential is never written into Grok's config or terminal environment. The profile is text-only: Grok's image-description helper stays on Grok.com, and the gateway drops screenshots or image chips before they reach Baseten. The profile uses an 850,000-token working context, compacts at 85%, caps completions at 65,536 tokens, allows 30 minutes of inference inactivity, and disables client retries so the backend remains the only layer allowed to retry paid work. Restart an already-open Grok session before selecting the new model because its model client is created at session start. This route requires PorkiCoder Premium.
Codex MCP Startup Rounds in 2.17.13
The verified Codex CLI 0.146.0 startup-round hotfix gives each thread-scoped MCP startup refresh an optional startupId. Codex can retire a superseded round and ignore its late terminal events instead of reporting them as failures of the current round; legacy identifier-less notifications retain their established behavior. PorkiCoder does not bundle, install, or replace the Codex executable, so this behavior requires the separately installed Codex 0.146.0 startup-round hotfix. PorkiCoder's own semantic no-op registration behavior remains unchanged.
Stable Codex MCP Registration in 2.17.10
If Codex's managed entry is already equivalent, PorkiCoder leaves ~/.codex/config.toml byte-for-byte untouched so it does not trigger a live all-server MCP refresh. A real path or bridge change still updates the entry through a private mode-0600, collision-resistant temporary file and preserves user-owned settings. This prevents refreshes caused by PorkiCoder's writer; Codex may still refresh its own built-in MCP services after Codex-owned settings changes. After a genuine update, start a fresh Codex session.
Codex Login Compatibility in 2.17.2
Codex may report the exact successful Logged in using ChatGPT status on stderr instead of stdout. PorkiCoder accepts that exact zero-exit status from either stream, but still rejects API-key login, extra banner output, near matches, and failed exits. If Codex still reports that subscription authentication is required, run codex login status, then restart the master session.
Two Deliberately Separate Consent and Billing Paths
Local CLI calls require explicit subscriptionConsent and consume the selected worker's subscription quota. Managed API calls require separate explicit paidApiConsent and use PorkiCoder's authenticated gateway. Neither consent carries across runs, and a local worker never falls back to a paid route.
Nothing to Learn — Just Ask
Ask in plain English and name the worker: "Use my Codex subscription for a second opinion on this diff", "Ask Grok Build to challenge this design", or "Ask Claude Code to review this bounded excerpt." Include the relevant diff, code, error, or design because local workers cannot inspect the active repository.
Current Baseten Scope
consult_kimi3 and consult_kimi3_baseten are compatibility names for the same Baseten K3 provider, while stock Grok can select that provider through its named kimi-k3-baseten model. Every Baseten-backed path requires PorkiCoder Premium; Gemini and GPT consults keep their existing included quota. The four older Baseten Consult names remain retired. Read the Baseten integration guide for the complete current route table, credential boundary, and capacity notes.
Startup-Tier Capacity in 2.17.39
Owner-key Baseten routes share one production gate set to 120 requests per minute, 1,000,000 tokens per minute, and 12 concurrent calls. Admission includes complete serialized messages, reasoning, tool-call history, tools, and response schemas, with a 25,000-token completion reserve reconciled against provider usage. A prompt that cannot leave room in one token window fails before dispatch with a trim-context message; PorkiCoder does not clamp it, silently switch providers, or replay it at the client layer.
Long-Session Token Safety in 2.17.36
Managed Kimi K3 and GLM-5.2 agent loops use a 262,144-token effective history profile and proactively summarize near 55% of that budget while preserving the six most recent messages. Kimi K3 agent and Baseten-consult requests also cap completion headroom at 65,536 tokens. These are rate-limit safety bounds, not claims that the providers' advertised context windows changed; unusually long sessions rely on the generated recap, and a completion that reaches its cap may stop there.

Research Sync — Trusted One-Way Publication NEW in v2.17.38

Research Sync publishes an explicitly mapped paper and evidence bundle from one trusted local Git project into another. It is a deterministic push path, not general folder mirroring: the source remains untouched, destination content never flows backward, and a destination file PorkiCoder does not own or no longer recognizes becomes a visible conflict.

Set Up by Talking to PorkiConsult
Ask PorkiConsult to trust the project in the current live terminal with porkicoder_sync_trust_current_project. A native dialog names that Git project before anything changes. Then porkicoder_sync_setup can connect two already trusted project IDs with exact repository-relative push mappings after a second native confirmation. The tool cannot accept caller-supplied absolute roots, shell commands, pull routes, or force-overwrite options.
Inspect Before or After a Run
Use porkicoder_sync_status for current route state, porkicoder_sync_preview for the exact additions, updates, removals, and conflicts, and porkicoder_sync_now for a manual push. The same trusted route powers automatic runs; only the source is watched, with a 10-second source-settle window followed by 15 seconds of system idle.
One Transaction, One Result
PorkiCoder hashes the source snapshot twice, validates every tracked mapping, stages and syncs files, then installs the evidence tree before its HTML entry point. Matching lock, journal, receipt, and managed-trash records recover an interrupted generation or roll it back as one unit. Symlinks, special files, unsafe paths, case-fold collisions, nested roots, and destination drift fail closed.
Open Research Sync from Settings
Open Settings in PorkiCoder to see one-way research sync. The panel shows waiting, hashing, committing, success, conflict, and error states plus route-relative counts, digests, and bounded conflict information. Conflicts and errors also toast. Nothing is written into the terminal.
Main-Process Trust Boundary
Canonical project roots, bearer capability, hashing, and filesystem operations stay in PorkiCoder's main process and its authenticated loopback bridge. The renderer receives sanitized route-relative state only; Research Sync never inspects or intercepts PTY bytes. The shipped tracked manifests declare only the exact tab_namer to porkr1 paper-and-evidence route.

Worktree Fan-Out UPDATED in v2.9.2

Worktree Fan-Out lets Claude Code, Codex, Grok Build, or opencode take one task prompt and run it across 2-5 isolated git worktrees from a PorkiCoder-managed terminal. Each candidate gets its own branch, cwd, model run, status, diff, and cleanup path, while your source worktree stays unchanged until a winner patch is applied. If terminal fan-out starts from a dirty source worktree, PorkiCoder creates a visible local checkpoint commit first so candidates branch from a clean, reviewable base.

Run Parallel Candidates
Start with fanout_run and a prompt. By default, PorkiCoder rotates workers across GLM-5.2, Kimi K2.7 Code, and Codex high effort, then repeats as needed. You can choose one model for every worker, pass an explicit model mix, set a worker count, stagger launches, and cap the shared fan-out budget.
Inspect and Compare
Use fanout_status to watch progress, fanout_list to find recent runs, fanout_diff to compare candidate changes, and fanout_open_candidate to inspect a candidate workspace directly in PorkiCoder. Friendly selectors like latest, c1, A, and winner keep agents from passing raw IDs around.
Judge, Apply, and Clean Up
fanout_judge asks an evaluator model to review candidate diffs and optional verification output. In recommend-only mode it stores a winner for follow-up; with explicit confirmation, fanout_apply_winner applies that patch back to the source worktree as unstaged changes. Loser worktrees are discarded by default after patch snapshots are saved, and fanout_discard remains available when you want to remove a specific candidate manually.
Dirty Worktree Checkpoints
Checkpoint commits are intentionally conservative: PorkiCoder refuses likely secrets, detached HEADs, in-progress Git operations, and dirty submodules unless the agent explicitly opts into those cases. The checkpoint summary records the before and after commit IDs, and failed setup attempts roll back the checkpoint when HEAD is still on the generated commit.
Available Across Claude Code, Codex, Grok Build, and opencode
Fan-out tools are exposed through the bundled porkicoder-consult MCP server in Claude Code, Codex, Grok Build, and opencode. PorkiCoder keeps the loopback bridge credentials in a local 0600 token file while the app is running, so globally registered MCP sessions can create, inspect, judge, apply, and discard managed fan-out worktrees without per-terminal setup.

Built-in Terminal Skills UPDATED in v2.10.1

PorkiCoder includes long-running workflow skills for terminal agents. Fresh installs receive managed deployment, feature, bug-fixing, and multi-agent review workflows for Claude Code, Codex, and OpenCode without a separate skill repository.

Installed on Launch
On startup, PorkiCoder refreshes managed skill copies under ~/.claude/skills, ~/.codex/skills, ~/.agents/skills, and ~/.config/opencode/skills. Existing user-owned skill folders are left alone; only directories marked as PorkiCoder-managed are replaced.
Ready in Terminal Agents
Claude Code sees the normal Claude skill layout, Codex sees normal Codex skills, and opencode receives the bundled skill path plus generated terminal command adapters. The same skill names are available whether the user starts from a new PC or an existing setup.
Multi-Agent Review Bench
The review workflow sends architecture questions to GLM-5.2, visual UI work to Gemini, and bug finding to GLM-5.2 plus Kimi K2.7 Code through fan-out. The final gate combines model reviews with the local code-review pass before ship.

HogCode CLI READ-ONLY ASSISTANT

HogCode is bundled with PorkiCoder. Open a fresh integrated terminal and type the bare command hogcode to enter its persistent local shell. There is no global npm install, system Node dependency, or shell-profile change.

command -v hogcode hogcode

The first command should print an app-owned path ending in hogcode-terminal-launcher-v1/bin/hogcode. The second should remain at a hogcode> prompt until you enter /exit, send EOF, or interrupt an idle prompt.

Built-in commands
Enter /help for the shell guide. Local commands include /sessions, /models, /doctor, /usage, and /exit.
Private, self-repairing launcher
PorkiCoder installs the launcher atomically under its private user-data directory and puts that directory first on PATH only for integrated terminals. It never changes your global PATH and does not appear in unrelated external terminals.
Sign in and run the assistant
Run hogcode login once and approve the short device code in your browser. Then enter an ordinary prompt in the interactive shell, or use hogcode -p "explain this project". HogCode uses PorkiCoder's managed Kimi K2.7 Code route with the read-only Read, Glob, and Grep tools. Sessions and exact model usage are durable, and hogcode resume <session-id> -p "continue" resumes only when the account and durable boundary match.
Deliberately narrow production slice
The managed route is read-only. It does not run shell commands or modify files, does not expose PorkiCoder's provider key, and never re-executes a logical request after an ambiguous provider result. Server-side credit and owner-budget gates apply, and finite local --budget-usd runs remain unavailable in this slice.
If the command is not found
Restart PorkiCoder and open a new integrated terminal tab. Existing terminal sessions keep the environment they started with and will not receive the private launcher PATH retroactively.

AGENT HOG — powered by Gemini 3.7 FLASH UPDATED in v2.17.64

AGENT HOG is PorkiCoder's built-in assistant, powered by Gemini 3.7 FLASH. There is no model picker or thinking selector to manage. Choose Chat for fast questions with no file access, or Agent when the task needs to inspect the project, run checks, and make changes.

Updated in v2.17.64: Agent now runs on PorkiCoder's native Gemini loop. It does not route IDE work through OpenCode or an Anthropic SDK. Chat and Agent still share one fixed AGENT HOG profile, while the optional OpenCode terminal remains a separate feature.

The header always shows AGENT HOG and powered by Gemini 3.7 FLASH, so the name in the interface matches the service answering the request. The active profile is managed by PorkiCoder and can be upgraded later without adding another setup decision.

Open Advanced to switch between Chat and Agent and use the controls available to that mode. Model, effort, and execution details are intentionally absent. Sign In lives with the global sidebar controls rather than in the chat toolbar.

How It Works
Agent Mode gives AGENT HOG project tools for multi-step work:

1. You describe the task — "Refactor the auth module", "Add dark mode", "Fix the failing test". Plain English.

2. Choose Chat or Agent — Chat answers without file access. Agent can inspect the project and take actions for you.

3. AGENT HOG plans and acts — It reviews and searches the project, runs checks, and streams progress while it works.

4. Review file changes — Supported file edits can pause for an accept/reject preview before they proceed.

5. Follow readable progress — The activity card describes outcomes such as reviewing files, updating code, checking the project, and finishing the task, with explicit Done or Error status.
Agent Capabilities
Project context — Review files in your project to understand the task.

Project search — Find relevant files, symbols, patterns, and references.

Commands and checks — Run tests, builds, linters, package commands, and Git inspections.

Research — Look up current documentation when the task calls for it.

Parallel work — Delegate focused subtasks when fresh context or simultaneous review helps.

File changes — Create and update project files, with review prompts on supported write paths.
Human-in-the-Loop Boundary
Supported file edits pause for PorkiCoder's diff review, and an edit is rejected if the file changes on disk while you review it. Agent shell commands run inside a macOS Seatbelt sandbox confined to the open workspace, with no network access and an environment scrubbed of API keys and tokens; any command that can change files requires your explicit per-command approval. Secret files such as .env stay hidden from every agent tool, and web fetches refuse loopback and cloud-metadata destinations. Review the agent's work before production changes.
Autopilot Mode NEW in v1.5.6
Trust AGENT HOG on routine work? Open Advanced in the chat header and toggle Autopilot. Supported file edits apply automatically without the diff preview modal, while changed files remain visible in the activity card. The toggle persists across restarts and does not broaden the shell-command boundary above.
Resumable Sessions
Native Agent sessions are persisted per thread ID. You can close PorkiCoder, reopen it, and resume a multi-step agent task where you left off. After updating from 2.17.63, start one New Chat: older Agent threads contain OpenCode-specific hidden state that cannot be migrated safely.
Project Instructions (porki.md)
Drop a porki.md file in your project root and the agent will load it as persistent project-level instructions. Use it to describe your codebase conventions, architecture, key files, and preferences — the agent reads it before every task so it always has the right context.
Preview Error Auto-Send
When your Live Preview hits a runtime error, PorkiCoder automatically sends the error to the AI so it can diagnose and fix the issue — no more copy-pasting stack traces.
Pro Tip
Agent Mode works best with clear, scoped tasks. For broad refactors, AGENT HOG can parallelize focused work. You can attach screenshots and diagrams directly to Agent tasks.

Publish-to-Web

Premium users can publish any project as a live site at <name>.porkicoder.com directly from PorkiCoder with one click.

How It Works
1. Choose a subdomain — Pick a name and your site goes live at <name>.porkicoder.com.

2. One-click deploy — PorkiCoder uploads your project's public files to the server automatically.

3. Instant updates — Re-publish anytime to push changes live.
Details
Premium feature — Available to all paid subscribers at no extra cost.

Static sites — Supports HTML, CSS, JS, and static assets. Perfect for portfolios, demos, and prototypes.

Automatic provisioning — Subdomain routing and HTTPS are handled for you.
Pro Tip
Combine Publish-to-Web with Agent Mode — ask the agent to build a landing page, then publish it live without leaving PorkiCoder.

Live Preview

Live Preview lets you see your project running directly inside PorkiCoder without leaving the workspace. Click the preview button to launch your project on a local port (19100–19110) and start working visually.

Smart Project Detection
PorkiCoder automatically detects your project type and picks the best preview strategy:

Vite projects — Uses Vite's native dev server with full HMR support.

Dev command projects — Next.js, Nuxt, CRA, and others run via npm run dev with auto port detection.

Static sites — Served with a built-in HTTP server and WebSocket-based live reload.
Key Features
Auto-reload — File changes trigger instant browser refresh, debounced for rapid multi-file saves from the AI agent.

Framework-aware — Detects package managers (npm, yarn, pnpm, bun) and respects each framework's conventions.

Graceful fallback — If Vite or a dev command fails, PorkiCoder falls back to static serving automatically.

Zero config — No setup required. Open a project, hit preview, and it works.
Pro Tip
Live Preview works seamlessly with Agent Mode. When the agent modifies files, the preview auto-reloads so you can see changes in real time without switching windows.

Terminal Overlord UPDATED in v2.17.61

Terminal Overlord supervises Claude Code, Codex, or Grok Build inside PorkiCoder. At a normal shell prompt, type codex overlord, claude overlord, or grok overlord to arm HOGSPHERE and launch that provider in one step. You can also click the HOGSPHERE orb or type the exact command /overlord, then start a provider normally. PorkiCoder shows ARMED — WAITING FOR AGENT until a supported agent owns the terminal's foreground process. Click HOGSPHERE again, type /overlord again, or press STOP in the HUD to disable it.

HOGSPHERE Supervision
The retro pixel cyber-pig HUD appears inside the terminal with the detected provider, current decision engine, current state, successful approval count, a click-to-open LOG, and an immediate STOP button. Deterministic approvals show LOCAL RULES. After a successful autonomous write, a short speech bubble confirms what happened.

Version 2.17.61 removes every model from Overlord. Approval recognition and exact-key encoding are deterministic local code, agent questions always wait for you, and terminal screens never go to Gemini or another model. Codex, Claude, and Grok mappings are isolated in provider modules. If a second approval arrives while the first write is settling, an immediate rescan handles the replacement instead of losing the event.

A visible /goal stalled footer can describe an older goal; it is not fresh evidence that a just-delivered Living Card prompt started. Overlord continues to inspect xterm's logical live baseY screen while scrollback remains outside authority.

Version 2.17.54 adds start-and-supervise commands. The exact two-word provider commands clear themselves from the shell, arm Overlord first, and launch only the allowlisted provider after activation succeeds. Agent questions are never answered autonomously; they wait for you.

Version 2.17.60 keeps supervision on the logical live screen. Overlord reads xterm's current baseY screen even if the visual viewportY trails after a /goal footer redraw, pane refit, or user scrollback. Only live-screen rows are inspected; scrollback is never fed to the classifier. The change adds no model call or new approval authority.

Version 2.17.59 approves Claude proceed and Grok run popups. A bounded Do you want to proceed? menu above the persistent composer mode line is an authorization request, not the idle composer. Grok run/edit titles with a visible Yes/No menu match locally. A wrapped Codex title whose ? lands on the next row still matches, and a cursor on persist without a highlight is not used as a navigation origin. The change adds no model call or new approval authority; session and prefix grants remain human-only, and every live-viewport, render-drain, revision, foreground, human-input, and lease check still applies.

Version 2.17.58 hardens Codex 0.149 approvals in narrow panes. A long Allow Codex to run title may wrap across the full bounded interaction header and still reach the verified one-time Yes/proceed write path. The change adds no model call or new approval authority; session and prefix grants remain human-only, and every live-viewport, render-drain, revision, foreground, human-input, and lease check still applies.

Version 2.17.52 gives Overlord its own HOGSPHERE control. The cyber-pig orb toggles supervision for the active local terminal and follows changes made by /overlord or STOP. It repaints when you switch tabs and is disabled for remote terminals. The neighboring shimmering eclipse controls AI panels instead.

Version 2.17.53 keeps Codex card input exact. The card sends a Codex prompt as one explicit paste followed by an ordered Enter. Paste markers are ignored by PorkiCoder's logical command observer, so an exact /overlord from the card still toggles HOGSPHERE and ordinary prompts still pass through once.

Version 2.17.15 removes Gemini from the approval loop. Supported prompts are recognized, classified, and encoded entirely inside PorkiCoder. Overlord needs no model key, proxy request, token budget, network round trip, or model usage charge.

Version 2.17.21 separates interaction detection from approval intent. PorkiCoder waits for a stable, fully rendered live xterm viewport, isolates one bounded local menu, and requires source-derived evidence of a command, edit, network, permission, or MCP authorization request before trust-mode policy can select anything. The local encoder can emit only an exact visible selection, a verified yes/no response, or Enter for an explicit approval gate; it cannot invent arbitrary terminal text or general navigation.

Version 2.17.23 recognizes clipped Codex command approvals. When a long wrapped command pushes the bottom choice and popup footer just below the live viewport, an exact Codex approval title with sequential numbered choices and a visible affirmative remains actionable. The exception is deliberately narrow: stale transcript titles, questions, forms, generic option menus, and the primary composer still remain human-controlled.

Version 2.17.25 makes terminal input byte-transparent. The renderer no longer holds a leading / to detect a typed Overlord command. Paths, URLs, provider slash commands, pasted text, control input, and application Enter reach the PTY immediately and unchanged. Use the HOGSPHERE button in either the main or detached terminal header to toggle supervision on the active local terminal; remote terminals are unaffected.

Version 2.17.26 restores the typed command without restoring the delay. Every command character, including the first slash, reaches the PTY immediately. Only when Enter arrives after an exact case-insensitive /overlord line does PorkiCoder clear that already-forwarded line with Ctrl-U, consume Enter, and invoke the authenticated toggle. Non-exact slash input keeps normal terminal behavior, and the HOGSPHERE button remains available.

Version 2.17.35 records bounded approval-gap diagnostics. If an approval-shaped surface stalls, fails a safety stage, receives human intervention, later recovers, or remains pending when the session ends, PorkiCoder records one deduplicated local event. This diagnostic path observes failures only; it never becomes an input to the approval classifier or terminal encoder and cannot grant authority to an ambiguous screen.

Approvals and questions have separate authority. Proven command, edit, network, permission, and MCP authorization menus use deterministic local approvals. Idle composers, earlier transcript questions, interrupted prompts, required forms, settings, app sign-in and link flows, browser-completion actions, ordinary agent prose, and unknown surfaces remain human-controlled. Overlord has no free-text encoder and cannot answer them.

Trust mode approves a proven authorization regardless of its contents. PorkiCoder first chooses a visible one-time or turn-scoped affirmative. If the provider offers only another affirmative, including a session or persistent grant, Overlord accepts that choice rather than stalling. It preserves the exact visible label, including punctuation and case, and navigates only from a visible highlighted row. A durable request signature ignores spinner noise while distinguishing changed commands, edits, and MCP targets.

Type /overlord again or press STOP to disable supervision. Any normal human keystroke immediately cancels an in-flight approval check before it can reach the terminal.
Foreground and Safety Boundary
PorkiCoder verifies the macOS foreground process group before activation, on every heartbeat, and for every autonomous write. The write requires a fresh, single-use foreground lease followed by a new render-drained snapshot of the same prompt. It also rechecks the logical live screen, output revision, and human-input revision at the commit point. HOGSPHERE waits if the prompt changed, the provider is backgrounded, or an interactive child shell, editor, pager, or other tool owns the terminal.

Only xterm's logical live screen at baseY is inspected. Overlord can keep supervising while you read scrollback, but the visible history is never inspected and cannot be mistaken for a current prompt.

Overlord is an explicit trust mode, not a command-risk reviewer. Once a screen is proven to be an authorization request, it does not veto that deterministic approval because the command or tool involves destructive, production, credential, payment, publishing, release, force-push, reset, database, network, or workspace risk. Keep backups and use it only where that trust is appropriate. Agent questions are never answered on your behalf; they wait for you.
Privacy, Billing, and Limits
Deterministic approval decisions stay on-device. Overlord never sends a terminal snapshot to a model: ordinary terminal output, approvals, agent questions, idle composers, and approval history all stay local.

Terminal snapshots and decisions are not stored in chat history. The visible approval LOG holds at most 32 successful actions for the current terminal session only; it is hidden by default and is not persisted. Local approval creates no model usage or model charge.

The separate 2.17.35 approval-gap diagnostic stores no raw terminal snapshot or recent input. Its allowlisted JSON fields contain bounded failure stage, geometry, booleans, and sanitized title or choice labels; secrets, tokens, opaque values, code spans, URLs, email addresses, hosts, and paths are redacted, while redraw identifiers use a per-session HMAC. Files stay under PorkiCoder's owner-only app-data directory, rotate at 1 MiB with one previous segment, and are never uploaded. Diagnostic write failure cannot block the terminal or relax approval policy.

A session stops when Overlord is disabled or when its provider or terminal exits. There is no 128-action or 24-hour ceiling. An unchanged non-approval or unknown screen remains passive and never gains authority from a retry timer; an unchanged proven approval can be retried after a short acknowledgement window if the provider did not dismiss it.

Terminal UPDATED in v2.17.70

PorkiCoder's built-in terminal supports up to 6 concurrent sessions — perfect for running multiple Claude Code instances, dev servers, and build tools side by side.

Lightweight terminal restore in 2.17.70
Restored local terminals initialize one at a time, and a saved living-card layout is enabled only after those sessions are ready. This prevents PTYs, xterm renderers, card images, telemetry, and animation from all starting in the same burst.

Snapshot tracking is activity-driven. Terminal output schedules at most one refresh per eight seconds, terminal and directory changes are debounced, and app quit still performs a final capture. An idle terminal performs no recurring process-table or lsof scan. Turning living-card view off explicitly parks Grok's sprite loop.

A detected PorkiConsult row now produces one flash burst lasting at most 12 seconds. Repeated scans of the same row do not re-arm it; the row must disappear before a later consult can start a new burst. The existing restore limits remain: Grok can resume a recovered local conversation, other local CLIs reopen as shells, and remote-Mac tabs plus scrollback are not restored. All inspection stays on-device and adds no network request, model call, data collection, or approval authority.
Cthulhu flashes on the live consult tool in 2.17.69
The Grok Cthulhu living card loops its flash animation while porkiconsult is transmitting. Grok Build 1.0.5 paints a collapsed MCP consult as title-cased Porkicoder-consult Consult Kimi3 (same form for Codex, Claude Code, Gemini, Gpt5, Grok Build, and Kimi3 Baseten). That header is the live signal. Legacy wire ids at the start of a row — consult_codex, porkicoder-consult__consult_*, mcp__porkicoder-consult__consult_*, or those ids immediately after Call/Using/Used — still count.

Mid-line hits in file dumps, markdown lists, and shell source do not flash. Search / Searching / Searched is discovery, not transmission. Composer and queued #N wraps that merely mention those names do not flash, and the word porkicoder alone never does. A completed consult header still in the scan still flashes; when that row leaves the scan, flash stops. The change is local TUI parsing and renderer animation; it adds no data collection, model call, network request, or approval authority.
Terminals restore after restart in 2.17.68
Local terminal tabs reopen after you quit PorkiCoder. Each tab returns to the directory it was using, and a tab that was running Grok Build relaunches with grok --resume <session-id> so the same conversation continues. Manual names, tab colors, and the active tab carry over.

PorkiCoder reads the session id from Grok's open files under ~/.grok/sessions. If that id cannot be recovered, it falls back to grok --continue for the directory. Claude Code and Codex tabs restore as shells in their last directory. Remote-Mac tabs and scrollback are not restored; Grok redraws its own conversation on resume. Snapshot writes pause while empty shells are spawned so a crash during restore cannot replace the Grok session list with blank terminals.
Reliable Living Card delivery in 2.17.61
Claude and Codex card prompts use an awaited bracketed paste followed by a separate Enter. Grok keeps one atomic prompt-plus-Enter write because its live TUI interpreted a split paste as a clipboard-image action. An unknown shell is refused rather than receiving guessed provider bytes.

The draft remains recoverable while delivery is pending. The card reports SENDING, DELIVERED, SEND FAILED — RETRY, or NOT STARTED — PRESS ENTER OR RETRY; a failed write or missing fresh output/start signal restores the draft. Duplicate clicks and rapid Enter presses collapse into one in-flight delivery. Grok's busy queue and empty-Enter send-now behavior remain intact.
Cthulhu consult-transmission flash in 2.17.57
The Grok Cthulhu living card loops its flash animation while porkiconsult is in flight. A current Grok scan row naming consult_codex, consult_claude_code, consult_kimi, consult_gemini, consult_gpt, consult_grok, consult_kimi3, or the MCP ids porkicoder-consult__consult_* / mcp__porkicoder-consult__consult_* counts as transmission. Gutter-pipe Call rows and wrapped tool-id rows count; a diamond is not required. Composer and queued #N wraps that merely mention those names do not flash, and the word porkicoder alone never does. When the consult row leaves the scan, flash stops.

Codex 0.149 living cards keep context from the matching session jsonl when the composer footer no longer paints percent context left, and Overlord still matches Allow Codex to run exec overlays. The change is local TUI parsing, renderer animation, and on-device approval matching; it adds no data collection, model call, network request, or approval authority.
Image paste, growing composer, and Cmd+P in 2.17.56
A living-card composer now grows with the prompt. Paste a clipboard image with Ctrl+V in Codex (the OS clipboard) or Cmd+V in other CLIs (a temporary PNG path under PorkiCoder's app-data directory). Temp images are pruned; they are not uploaded by PorkiCoder.

Cmd+P (Command only, not Control-P) toggles the focused pane between its living card and the raw terminal. The hog-sphere now opens living agent cards; the eclipse now belongs to Terminal Overlord. The change is local clipboard, renderer layout, and toolbar icons; it adds no data collection, model call, network request, or approval authority.
Per-pane living cards and raw CLI in 2.17.55
The eclipse still opens AI panels for every local terminal at once. After that, each living card has a >_ control at the left of its composer that shows only that pane's raw terminal. A raw pane in the same grid shows a CARD chip at the top-left to restore only that pane's living card. Two cards and one CLI can stay visible together.

Clicking the eclipse while some panes are raw restores every local pane to a card without collapsing the grid. Clicking it while every local pane is already a card still closes AI panels and returns to one tabbed terminal. Remote terminals never grow a card or a CARD chip. The change is local renderer layout; it adds no data collection, model call, network request, or approval authority.
Codex context continuity in 2.17.54
Codex's percentage footer now merges with partial process telemetry instead of requiring an all-or-nothing stats response. The renderer also keeps the recently verified Codex identity through a brief foreground-stat miss, so a normal TUI repaint no longer empties the living card's context-left bar or CONTEXT stat.

Exact used/window token totals still take precedence when Codex exposes them. Percentage and status rows remain interface chrome rather than narration, and this local telemetry repair sends no terminal content to a model or service.
Codex card context and first-send repair in 2.17.53
Codex's percentage-only context left footer and expanded Context % used status now drive the living card's context-left bar and CONTEXT stat. If exact used/window token totals are also visible, those remain the more precise source. Context and status footers are treated as Codex interface chrome, so they do not become bot narration or a new answer title.

Pressing Enter once in a Codex card now writes the prompt as one explicit bracketed paste and sends Enter only after that PTY write lands. This avoids Codex consuming the same Enter to finish its paste buffer. The terminal observer keeps the pasted text as one logical prompt, ignores the transport markers, and preserves exact /overlord routing. This changes no provider interrupt policy and adds no data collection, model call, network request, or approval authority.
Separate AI Panels and Overlord controls in 2.17.52
The terminal header now has two distinct pixel-art controls. A neon eclipse opens and closes AI panels and living Agent Cards. HOGSPHERE belongs to Terminal Overlord and toggles supervision for the active local terminal. The Overlord state follows the button, /overlord, and STOP as you switch tabs; its button is disabled for remote terminals. Both terminal-header implementations carry the same controls.

The eclipse shimmer becomes still when reduced motion is requested. These controls add no data collection, model call, network request, or approval authority; existing Overlord privacy and safety boundaries are unchanged.
Updater-visible Grok card ship in 2.17.51
2.17.51 is the same Grok living-card work as public 2.17.50, published under a new version so Macs that already showed 2.17.50 from a same-day local install will update. The chip ticks, queued #N prompts show on the card, empty Enter force-sends, the hog-sphere orb lets go of the keyboard, idle flaps, and PorkiCoder consult wait flashes.

Prompts, titles, and cards stay on this Mac.
Grok card timer, queue send, and consult flash in 2.17.50
Grok, Codex, and OpenCode cards tick WORKING and IDLE from the card clock. Claude still uses its session stamp. Grok #N queue rows show as a count plus the first words of the prompt. Empty Enter or Send force-sends that queue into the same PTY, like Grok Build send-now.

Switching to raw terminal blurs the hog-sphere orb and focuses the PTY so you can type immediately. Idle flaps the flying wing pair only. A current PorkiCoder consult tool row plays the flashy dissolve. Working Grok stays on the still. If the session exits, the composer restarts it.

Prompts, titles, and cards stay on this Mac.
In-card composer and no pop-out in 2.17.49
Each living card has a composer that types into the same PTY already running under the hidden xterm. Enter sends the line. Shift+Enter wraps in the box and still sends as one line so Grok and Codex alt-screen composers do not take an early Enter. Esc clears the draft. An empty Ctrl-C sends interrupt. /overlord still toggles HOGSPHERE. PorkiCoder never starts a new agent session from the card.

While cards are on, the hidden xterm cannot receive keystrokes. Focus is the composer. If the terminal is not ready, the draft stays. The hog-sphere orb now lights the sprite's own eyes, keeps a hairline ring at rest, and uses aria-pressed as the on state. Floating pop-out terminals cannot be opened.

Prompts, titles, and cards stay on this Mac.
Pig orb, three buttons, and per-agent naming in 2.17.48
The hog-sphere portrait is an icon-only control that opens living agent cards. The terminal header keeps three buttons: new tab, pig cards, and fullscreen. Pop-out, header close, the remote-workspace pig, and the Overlord shield leave the chrome. Type /overlord or press STOP in the HUD to supervise a local agent. Research sync status moved to Settings.

Claude Code, Grok Build, and Codex each have their own card-naming ruleset. Grok's title bar, pager, Dashboard, and composer footer are chrome. Codex •-status is chrome; •-tools stay. Repeated titles such as Mode Mode are rejected. The name plate follows the latest named activity instead of freezing on the first prompt.

Titles, cards, and sync status stay on this Mac.
Living Agent Cards as a first-class view in 2.17.47
The split-layout toolbar glyph is now a hog-sphere orb that turns living agent cards on and off. Fresh installs still open terminal-first; last layout and last card/raw view are remembered. SYN, New OpenCode, Export to chat, and Clear are gone from the toolbar; Reattach and floating stay. The floating window runs the same cards. Grok Build's session title bar (the generated title plus [Dashboard]) is chrome, so the name plate follows PorkiCoder's on-device tab namer instead of freezing on MAIN PROJECT. PorkiCoder also ships a native Grok managed_config.toml layer.

Version 2.17.49 adds the in-card composer and removes floating pop-out terminals. Titles, cards, and the managed Grok file stay on this Mac.
Agent Cards state, work log, and STALL in 2.17.46
The card now reads Claude Code's session registry for busy / waiting / shell / idle and shows that as a ring, eye glow, and a WORKING / YOUR TURN / IDLE / SHELL chip with a stopwatch. Agents without a registry fall back to streamed text or recent terminal output. A claimed busy with no terminal output for 45 seconds becomes STALLED. On panels about 560px and wider a work log lists the current and last five emissions; a landed message can be paged back with the buttons or the wheel. OpenCode has its own bot. Grok's "Writing file…" preparing spinner is chrome, not an answer, so it no longer flips the name plate.

State, log, and titles stay on this Mac.
Agent Cards redesign in 2.17.45
The multi-panel card is now borderless - the pane's own tab-colour ring is the only frame - and reads top to bottom as a trading card: the name plate, a speech bubble with its tail pointing down at the bot, the bot itself, and a stat band. Claude, Codex, and Grok each have their own bot in the same pixel-art family as the overlord pig; other agents and plain shells keep the pig.

The bubble types the agent's words in like a Game Boy textbox: character by character with beats on punctuation, a caret trailing the text, a full page held behind a ▼ and then wiped out. It follows the live stream - appends keep typing, rewrites erase only the changed tail, a finished message always rests on a real last page, and a stream that outruns the typing jumps to the freshest words. The stat band shows the HP-style context bar, the agent's flavor line, and CONTEXT / OUTPUT / TURNS cells that roll and flash as telemetry lands. Reduced-motion turns all of that motion off; hidden panels park the typewriter and a resized pane re-pages what is on screen. Nothing new leaves this Mac.
Agent Cards in 2.17.44
Flip the terminal to multi-panel (the panel button) and every pane running a supported agent becomes a card: a HOGSPHERE pig-bot portrait, an uppercase title the local namer gives the current answer, a context-left bar, a per-agent flavor line, and a bubble with a small snippet of the live stream. The card sits over the terminal — there is no way to type into it — while the real session keeps running underneath as the text source.

Titles use the same on-device Title-SFT FLAN flat1e4 model as tab naming, so narrating a stream costs no API calls. Claude's context and token totals come from its local session transcript; Grok and Codex report context parsed from their own terminal UIs. Emission text and titles never leave this Mac.
Title-SFT FLAN Tab Titles in 2.17.43
The private local namer is now Title-SFT FLAN flat1e4. Every eligible submitted shell command or human agent prompt can request a new private title. App start pre-warms the unconstrained greedy ONNX worker, and verified runtime assets are hashed and loaded in one pass so the first rename does not wait on a cold session. Slash commands, bare agent launches, and startup confirmations still stay unnamed.

The 77M encoder-decoder writes a raw title. There is no Hybrid A glue and no centroid fill. Titles remain one to three ASCII words and 32 characters. The task and title still stay on this Mac.
Millisecond 6t Tab Titles in 2.17.42
Every eligible submitted shell command or human agent prompt can request a new private title. The 10-word skip from 2.17.41 is gone. App start pre-warms the local 6t argmax + centroid worker, and verified runtime assets are hashed and loaded in one pass so the first rename does not wait on a cold ONNX session. After warmup, a title request settles in about 10 ms on this Mac. Slash commands, bare agent launches, and startup confirmations still stay unnamed.

The 35M encoder-decoder still uses constrained Beam 4 over two visible source words, Hybrid A glue, and the frozen centroid v2 table. The task and title still stay on this Mac.
6t Argmax Tab Titles in 2.17.41
The private local namer became 6t argmax + centroid. The 35M encoder-decoder still uses constrained Beam 4 over two visible source words, Hybrid A glue, and the frozen centroid v2 table. Only the namer weights changed. In 2.17.41 a submitted shell command or human agent prompt needed at least ten technical tokens (A-Za-z0-9+#) after the usual first-paragraph, 400-code-point preprocess; shorter prompts kept the current title and did not reuse a previous first-shell privacy verdict. 2.17.42 removes that skip.

On this Mac the INT8 worker produced 1,000 valid labels in 1,000 reusable tasks, with 19.1 ms warm median latency, 26.0 ms p95, and 535.6 ms one-time initialization. Terminal-board research scored the 6t stack +0.193 versus the previous B-9500 pin at n=1,000. The task and title still stay on this Mac.
Prompt-only Tab Titles in 2.17.40
Eligible titles come only from submitted human input. A fresh ordinary shell can be named from its first eligible command after the privacy gate. After a supported interactive agent is identified, each eligible submitted human prompt can request a new title. Bare agent launches, startup confirmations, slash commands, streamed assistant output, status redraws, and tool-call markers do not request titles. The submitted task stays capped at 400 code points before the normal IPC validation.
Private Beam 4 Tab Titles in 2.17.35
A fresh local terminal can use the bundled Mid GSG Beam 4 + trained centroid v2 runtime to name one eligible ordinary shell task. The scratch-trained B/9500 35M encoder-decoder has the same weights as 2.17.34, but constrained four-beam search now compares complete, distinct source-word pairs instead of committing greedily. Every generated word must map to a visible source occurrence; the frozen centroid may add only one whole source word. Technical words may retain + and #, but punctuation-only labels are rejected.

Open Settings and choose Off, Shadow (evaluate only), or On (show titles) under Experimental Local Terminal Titles. On is the default when no preference exists; an invalid stored value fails closed to Off. Shadow performs the same local evaluation but leaves the directory-only label on screen. On displays folder · title. Generated titles are restricted to one to three ASCII words and 32 characters, and the full working directory remains available in the tab tooltip.

The first eligible printable shell edit can wait briefly for a bounded, main-process privacy check before its bytes are forwarded unchanged and in order. Naming proceeds only when the foreground shell owns the TTY in a normal editing state; canonical no-echo password and token prompts fail closed. Supported-agent observations separately require that agent to be the foreground process-group leader. The submitted human task is capped at 400 code points before the normal IPC validation.

The task and title stay on this Mac: no model provider, API key, project-file read, chat history, or naming log is involved. The runtime considers at most the first 96 source words and 160 tokenizer positions; decoding stops after eight tokens, and one FIFO worker runs one inference at a time with bounded queue, timeout, and restart behavior. A manual rename or launch-preset name always wins, remote terminals are excluded, and detach or reattach transfers only validated title state. Timeout, invalid output, worker failure, stale ownership, or an unsafe input context simply leaves the directory label in place.

On the new blinded 1,000-task product packet, the exact shipped INT8 path produced 1,000 valid labels, matched the FP32 bounded title on 951 rows, and scored 6.187 versus bounded FLAN's 5.516. Across three target-Mac runs, warm median latency was 19.95–20.73 ms, p95 was 26.0–34.5 ms, and one-time initialization was 513.7–521.2 ms. The bundled rarity data still contains only aggregate public-corpus word counts, not source task rows, and the model weights did not change. The sealed final 1,000-task split remains unopened.
Settled Terminal Resizing in 2.17.30
Zoom applies the new font metrics immediately, then waits 120 ms for the final layout before fitting xterm and resizing the PTY. Window drags, fullscreen changes, and zoom bursts coalesce toward the latest dimensions; PTY resize acknowledgements remain serialized, including an A-to-B-to-A size sequence.

PorkiCoder restores the pre-resize row anchor only if the user has not expressed newer scroll intent. Mouse-wheel scrolling, Shift+Page Up/Down, Shift+Home/End, and jump-to-live actions all supersede the older anchor. This changes terminal geometry only: it does not restart the shell, signal the user's process, or alter copied terminal bytes.
Direct-to-relay recovery and detached-session controls in 2.17.54
A remote session can still choose the authenticated direct LAN path first. If that direct socket fails, reconnect attempts now bypass the rediscovered nearby endpoint and use PorkiCoder's existing end-to-end encrypted cloud relay. A synchronous input-send failure closes the unusable encrypted channel, preserves the unsent sequence number, and reports reconnecting instead of exposing a raw socket write error.

The Settings button shows the combined active and detached remote-session count. Open Settings to end every remote session immediately. A disconnected shell remains available for reattach for 15 minutes, then the host ends it automatically; the previous 12-hour detached lifetime is retired. This limits ghost work without changing the 24-hour ceiling for a connected session.
Relay Disconnect Recovery in 2.17.20
If the relay WebSocket goes offline while the host terminal is producing output, PorkiCoder now contains the failed send instead of letting it become an uncaught main-process exception. The output chunk is already in the bounded replay buffer, the unusable connection is detached, and local relay and encrypted-session cleanup completes even when the socket cannot carry a final close notification.

The controller moves to reconnecting and can attach through an available Direct or Relay route. Sequence acknowledgements prevent duplicate terminal output when the buffered data is replayed. Reconnection still verifies the signed-in device identity, pinned keys, Noise session, and directional grant; replay remains limited to 3 MiB, and version 2.17.54 ends an unclaimed detached session after 15 minutes.
Host-side Controller Visibility in 2.17.19
Remote Workspaces now has two directional lists: Macs allowed to control this Mac shows controllers authorized to reach the current host, while Macs this Mac can control shows hosts available from the current controller. An inbound controller reports whether it is connected over Direct or Relay transport, its active and detached session counts, and any repositories in use. In current builds, the Settings button carries the live session-count badge and status tooltip even while the dialog is closed.

The host can revoke an individual controller or end every remote session immediately. These controls do not reduce the authority granted while a session is running: the remote process is a full shell running as the logged-in macOS user, and navigation roots are starting choices rather than a sandbox. Pair only Macs you trust.
Fullscreen Keyboard Focus in 2.17.12
After the fullscreen terminal layout finishes fitting, PorkiCoder returns keyboard focus to the active initialized terminal so typing resumes immediately. If the terminal panel was hidden during that relayout, focus is left alone instead of being moved into a hidden shell.
Relay-only Paired Macs in 2.17.18
A Mac paired through a manual invitation now appears in an always-visible Paired Macs section even when nearby discovery is unavailable. On the controller Mac, open Remote Workspaces, select the host's Connect button, choose a starting workspace and an installed launch preset, then open the remote terminal. Nearby Macs remains a separate opt-in list for unpaired local-network candidates.

Pairing is directional: pairing Work to Home allows Work to control Home, but does not automatically grant Home control of Work. Repeat pairing in the opposite direction only if that access is wanted. Navigation roots organize the starting-workspace picker; they do not confine the resulting shell. The remote process runs with the full authority of the logged-in macOS user.
Nearby Macs Preview in 2.17.17 (Opt-in)
PorkiCoder 2.17.17 can discover another signed-in Mac automatically, request one host approval, and open its remote terminal over an authenticated direct connection when the devices can reach each other. Signed directory identity, pinned keys, Noise, and a directional grant protect both direct and relayed sessions; only a reachability failure may fall back to the existing end-to-end encrypted relay. Direct discovery uses validated private or link-local IPv4/IPv6 endpoints rather than a hardcoded consumer address, while Macs on different networks continue through the relay.

The preview remains off by default in packaged builds. For the two-Mac validation run, quit PorkiCoder on both Macs and launch each installed app with open -a PorkiCoder --args --enable-nearby-transport-spike. Local terminals retain the emerald palette; remote terminals use white on black and show whether the active path is direct or relayed.
Nearby Transport Foundation in 2.17.16 (Internal)
PorkiCoder 2.17.16 packages a privacy-preserving Bonjour discovery and bounded local reachability spike for future Nearby Remote Workspaces validation. It is off by default in packaged builds and does not enable nearby pairing, direct terminal traffic, a Noise session, a directional grant, file access, or a PTY. Existing Remote Workspaces continues to use its end-to-end encrypted relay; the separately controlled internal flag exposes validation state only and never selects the LAN for terminal traffic.
Remote Workspace Dialog Visibility in 2.17.11
The linked-device pig, pairing invitation links, and incoming host-approval prompts open the Remote Workspaces dialog above terminal-first and fullscreen terminals. Opening it does not change the running terminal or workspace-view state.
Multi-Session Management
Each terminal session gets its own tab with a cyberpunk color palette (6 auto-assigned colors) and a colored left border strip for quick visual identification.

Activity indicators — Background tabs show a pulsing green dot when receiving output; turns amber 2 seconds after output stops; clears when the tab is focused.

Remote Workspaces beta — Open Settings and choose Remote Workspaces to pair another signed-in Mac and open one of its terminal workspaces. Hosting is off by default. On the host, enable hosting, choose one or more navigation roots for the starting-workspace picker, then create an invitation. Scan its QR code, open its porkicoder:// link, or enter it manually on the controller; compare the short phrase and approve on the host. The grant works only from that controller to that host. The dialog separates Macs allowed to control this Mac from Macs this Mac can control; the Settings badge reports active plus detached sessions and its release control can end them all immediately.

Encrypted reconnect and host controls — Terminal input and output are end-to-end encrypted between the paired devices; the relay routes opaque frames. A direct LAN connection that fails reconnects through the cloud relay and replays up to 3 MiB of recent output. A detached session remains reattachable for 15 minutes before automatic termination. Connected sessions keep a 24-hour ceiling and an eight-session per-device limit. Remote tabs have a fixed remote palette and connection state, while the host can end all sessions or revoke any device or grant. A remote terminal is a full shell running as the logged-in macOS user; navigation roots are starting choices, not a sandbox, so pair only devices you trust.

Ownership-checked terminal sessions — Every local and remote shell is routed through the main-process session broker. Each terminal handle belongs to one renderer window, and write, resize, close, and directory requests are schema- and size-checked.

Reliable tab close — Click a tab's close button and confirm to end that shell, clear its terminal output, and remove the tab. If other sessions remain, PorkiCoder activates a neighboring tab; closing the last one hides the terminal panel. Version 2.17.7 repairs a cleanup regression that could leave the tab and shell open. Closing is local and sends no path, output, or model request to a provider.

Live directory-named tabs — A new terminal tab starts with the basename of its authoritative launch directory, then follows the active shell's working directory after cd. It requires no provider request and remains the fallback. When local task titles are enabled, the bundled 77M-parameter model may add a short label; tabs that launch with a preset name are left alone.

Manual rename — Double-click any tab title to inline-edit the name. Only manual renames persist across sessions — automatic directory labels are recalculated, while a manual name always wins even as the shell changes directory.

Detection and limits — PorkiCoder reads the local shell's directory through bounded OS process inspection on macOS and Linux and accepts sanitized local OSC 7 reports from compatible shells. A nested or remote shell that does not report its directory may keep the last known local label. Lookup failures never change the shell's directory or terminal restart path; they affect only the tab label.

Quick Claude Code launchCmd+Shift+C creates a new named "claude" tab and starts the CLI automatically.

Quick OpenCode launch — The terminal button (Cmd+Shift+O) creates a new named "opencode" tab and starts the OpenCode TUI automatically.
Split View & Chat Bridge
Multi-Panel Split View — Toggle the split view button to show all terminals in a CSS grid (up to 3 columns). The active terminal is highlighted with its tab color. Click any panel to focus it.

Send to Chat — Captures the active terminal's recent output (or current selection) and pre-fills it as a code block in the chat input.

@terminal mention — Type @terminal in the chat input for autocomplete that injects the terminal buffer as inline context to the LLM.

Living card toggle — Press Cmd+P to switch the focused pane between its living card and raw terminal while the same PTY keeps running.
Terminal Keyboard Shortcuts
Cmd+P — Toggle the focused pane between its living agent card and the raw terminal (Command only; Control-P is not bound).

Ctrl+V — Paste a clipboard image into Codex.

Cmd+V — Paste a clipboard image into other CLIs (card mode inserts a temp path).

Cmd+1-9 — Switch to terminal tab 1–9 when the terminal is focused.

Cmd+Shift+[ / Cmd+Shift+] — Cycle to previous / next terminal tab.

Cmd+Shift+C — Quick-launch a new Claude Code session.

Cmd+Shift+O — Quick-launch a new OpenCode session.

Cmd+Shift+. toggles between the fullscreen terminal (terminal-first) and the classic workspace layout.
Editor — Cmd+K Inline Edit UPDATED in v2.17.63
Select code in the editor, press Cmd+K, describe the change in plain English, and AGENT HOG streams the replacement in place using its fast Gemini 3.7 Flash profile. Esc mid-stream restores the original; Cmd+Z after the edit completes reverts the whole thing in one keystroke.

Settings → Cmd+K Inline Edit lets you choose live-replace or diff-modal review and set a line cap that auto-switches large selections to the diff modal. There is no separate model picker, and retired model preferences cannot change the active profile.
Rock-Solid Lifecycle NEW in v1.5.8
A full reliability pass closed every race and leak we could find in the terminal controller: destroy now serializes with in-flight init/restart so closing a tab mid-startup can't crash or leak a PTY, restart preserves the original cwd after a project switch, the detached-window activity dot correctly decays from green to amber to idle, and the xterm readiness/cleanup paths no longer leak listeners on a destroy-during-init. If you ever saw a terminal freeze, spawn in the wrong folder, or leak when you closed a tab fast — that should all be gone.

AGENT HOG Sessions and Direct Q&A

AGENT HOG sessions are the center of PorkiCoder. Use Agent mode for repository work and long-running tasks, or Chat for quick questions without file access.

AGENT HOG — Agent
Best for: Real work — multi-step tasks, multi-file edits, refactors, anything that needs to read and change files.

Powered by PorkiCoder's native Gemini 3.7 FLASH loop with project context, image input, search, commands, checks, and file changes. Supported file writes can pause for diff review; shell commands can modify files outside that modal, so use trusted workspaces.
AGENT HOG — Chat
Best for: Quick questions and explanations — "what does this do?", a fast snippet, a one-off.

A lightweight, streaming Q&A lane powered by the same fixed AGENT HOG profile, with no file or tool access. Code returns in normal code blocks with a Copy button. Move into Agent when the task needs tools or repository changes.
Pro Tip
Start repository work in a coding agent session so living cards, Overlord, PorkiConsult, Render Copyable, and fan-out remain available around the run.

Keyboard Shortcuts

Master these shortcuts to navigate PorkiCoder like a pro:

  • CMD + M Toggle between Chat and Agent mode
  • CMD + N Start a new chat
  • CMD + W Toggle web search in Chat mode when available
  • CMD + SHIFT + C Quick-launch a new Claude Code terminal session
  • CMD + SHIFT + O Quick-launch a new OpenCode terminal session
  • CMD + SHIFT + . Toggle between the fullscreen terminal (terminal-first) and the classic workspace layout
  • CMD + SHIFT + [ Previous terminal tab
  • CMD + SHIFT + ] Next terminal tab
Web Search & Fixed AGENT HOG Profile
Open Advanced, or use CMD + W, to toggle web search in Chat when it is available. Agent mode owns its own research tools, so the Chat toggle stays hidden there.

AGENT HOG uses one PorkiCoder-managed Gemini 3.7 Flash profile in both Chat and Agent. Agent executes through PorkiCoder's native loop rather than OpenCode or an Anthropic SDK. There are no model-switching or effort shortcuts, and old per-mode selections cannot reactivate another profile.

Gemini Agent Terminal UPDATED in v2.17.63

The integrated OpenCode launcher is a separate, user-visible terminal feature. It is not a model choice inside AGENT HOG. Its model menu now presents only the Gemini family, with Gemini 3.7 Flash selected by default.

Install opencode (brew install anomalyco/tap/opencode or npm i -g opencode-ai), then use the OpenCode terminal button or type opencode. Managed terminal turns use your visible PorkiCoder credit balance on credit plans, separate from your consult allowance.

  • Gemini-only menu: Choose Gemini 3.7 Flash or Gemini 3.1 Pro profiles. Other model families no longer appear in this terminal's selection list.
  • Fast default: A new session starts on Gemini 3.7 Flash at its highest supported thinking profile.
  • Reviewable file writes: Supported Edit and Write actions can pause for PorkiCoder's accept/reject preview.
  • Embedded terminals included: use the OpenCode terminal button or run opencode in any PorkiCoder terminal to get the managed Gemini menu automatically.
  • Workflow skills included: PorkiCoder's managed terminal skills remain available without changing your real skill folders.
Heads up: opencode's shell commands run outside PorkiCoder's sandbox
PorkiCoder gates opencode's file writes, but opencode's own Bash tool executes outside PorkiCoder's tool runtime — treat opencode as an external agent, the same trust level as running it standalone.

AGENT HOG and Model Availability

PorkiCoder keeps the built-in assistant simple while its terminal, consult, and fan-out tools retain their own clearly scoped choices.

  • AGENT HOG NATIVE in v2.17.64: Chat and Agent are powered by Gemini 3.7 Flash with no model or thinking selector. Agent uses PorkiCoder's in-house tool loop, not OpenCode or an Anthropic SDK.
  • Cmd+K Inline Edit: Uses AGENT HOG's fast Gemini 3.7 Flash profile with no separate model choice.
  • Gemini Agent Terminal: The integrated OpenCode terminal exposes Gemini 3.7 Flash and Gemini 3.1 Pro profiles only, with Gemini 3.7 Flash as the default.
  • Local coding-agent terminals: Claude Code, Codex, and Grok Build remain available as their own terminal sessions and living cards.
  • Kimi and GLM scope: Kimi K2.7 Code and GLM-5.2 serve managed fan-out workers and judges. Both Kimi K3 Consult MCP names use Baseten exclusively.
  • Direct Q&A: Chat is a fast, no-tools AGENT HOG lane for quick questions and snippets.
No Main Model Picker
The built-in Chat and Agent experience always presents AGENT HOG powered by Gemini 3.7 FLASH. Model shortcuts, effort shortcuts, and saved main-picker choices are retired.

Managed Routes and Consent

PorkiCoder coordinates local subscription-backed CLIs and managed model routes from one meta-harness. Every paid consult, fan-out, or judging call requires explicit consent for the current conversation.

  • Local workers: Claude Code, Codex, and Grok Build consults use their existing local subscription logins.
  • Managed workers: Kimi and GLM routes run through PorkiCoder's authenticated gateway.
  • Separate consent: subscription-backed and paid managed calls use distinct approval fields.
  • No silent fallback: a local worker never changes into a paid managed call.
Clear route boundaries
Tool responses report the worker and route used. Managed provider credentials stay server-side, while local CLI authentication remains inside the installed CLI.

Account Password Recovery NEW in v2.17.65

On the PorkiCoder Sign In screen, choose Forgot Password?, enter your account email, and select Send Reset Code. Enter the code from the recovery email together with your new password and confirmation. You can request a new code from the code screen when needed.

Account-private by design
Every well-formed email request receives the same message whether or not an account exists. Delivery errors and server cooldowns are not exposed in the dialog. Malformed email syntax is rejected locally before a request is sent.
Temporary recovery credentials stay isolated
The one-time recovery code is verified in a non-persistent auth client that has no application listeners. It cannot unlock PorkiCoder before the password update succeeds. If the verified update fails, request a fresh code; if only session adoption fails after a successful change, sign in normally with the new password.

Recovery-code lifetime, password policy, and resend cooldown are enforced by the authentication service and may change with its server configuration. Codes should be treated as secrets and used only in PorkiCoder. Passwords and recovery codes are not included in PorkiCoder logs or the public website.

App Updates UPDATED in v2.17.24

PorkiCoder checks its signed macOS release feed ten seconds after startup, whenever you reactivate a hidden app and the previous check is at least one minute old, and about every 30 minutes during a long-lived session. Checks after wake wait 20 seconds so Wi-Fi and DNS can recover first. These safety timings are built in and are not user-configurable.

Available releases download once in the background. When the signed update is ready, an in-app banner shows Restart; Settings → App Version also shows the retained state and offers a manual Check for updates. PorkiCoder does not use an operating-system notification for this flow.

A ready update stays visible
Version 2.17.24 retains a revisioned updater snapshot in the main process. A renderer subscribes before replaying that snapshot, and the downloaded version remains sticky even if a later check, no-update result, or error arrives. Reopening a window after the download therefore cannot miss or erase the Restart action.
Failure recovery and local diagnostics
Manual failures show an in-app Retry action immediately. One or two background connectivity failures remain quiet; the third consecutive failure exposes Retry. Details are written locally to ~/Library/Logs/PorkiCoder/updater.log, which is restricted to the current user, rotates at 1 MB, and redacts bearer credentials, secret fields, and URL query values. It records updater lifecycle diagnostics, not project files, code, chat content, or terminal input.

PorkiCoder deduplicates activation, wake, periodic, and manual checks while an update operation is active. After a release is downloaded, it starts no further feed checks until that release is installed. Installation still requires the downloaded artifact to pass the updater's signing checks; pressing Restart performs a real quit so macOS can replace and relaunch the app.

Getting Started

Open a project, start Claude Code, Codex, Grok Build, or OpenCode in the terminal, then switch the pane into its living card with Cmd+P.

  • Sign in to the local coding-agent CLIs you plan to run.
  • Launch each agent in its own terminal pane and use Cmd+P for the living card.
  • Enable Terminal Overlord only when you want unattended approval handling for that pane.
  • Open a fresh agent session after an update so the shared MCP tools register correctly.
Shared MCP tool plane
PorkiCoder auto-registers PorkiConsult, Render Copyable, and worktree fan-out across supported coding harnesses. Ask the agent to list its MCP tools if you want to verify the connection.
Next steps
Follow the living cards, Terminal Overlord, and PorkiConsult tutorials for complete workflows.

Tips & Best Practices

  • Use AGENT HOG's Agent mode for repository work. Supported file writes can pause for diff review; shell commands can write outside that modal.
  • Use Chat for quick questions or images that need no files or tools.
  • Enable web search with CMD + W in Chat when you need recent frameworks or documentation.
  • Always provide full context in your prompts for better results.
  • Review AI-generated changes before applying them to your codebase.
  • Review agent changes and permission decisions before applying them to production systems.