Skip to content

Picky Hub

Click the Picky menu bar icon to open Hub. It is a resizable macOS window with a nine-page sidebar, not a transient companion panel.

Hub behavior:

  • The first open from a menu-bar display centers Hub on that display. Hub remembers its frame.
  • Summoning an already open or minimized Hub brings it forward without moving it, even when you click the menu-bar icon on another display. The selected page and each visited page’s scroll state remain available while the window stays alive.
  • Close Hub with the title-bar close control or Cmd + W. This closes the window, not Picky or its Pickles.
  • Read-only descriptions, paths, errors, and statistics values can be selected and copied. Navigation labels, buttons, and clickable cards keep their normal interaction instead of starting text selection.
  • Picky’s own windows (Hub and the HUD dock) are captured along with the rest of the screen, so the model can see the Picky UI that is visible. When you begin a voice/context capture, Picky returns focus to the external app you were using.

The sidebar contains these nine destinations:

  • Dashboard: an update card when a new Picky version is ready, setup and shell-command status, Your days with Picky (the same daily streak and activity calendar as Statistics Rhythm, with a View statistics link), guide previews, Quick Start shortcuts, up to four recommended plugins (plugins you have not installed yet come first), and feedback entry points.
  • Statistics: four local tabs. Rhythm (the first tab) shows your daily streak and activity calendar, then hour-of-day patterns, work types, and per-Pickle records filtered by period (Last 7 days ends today) and project. Badges has 24 badges earned from your whole history, with progress toward challenge milestones. Earned badges stay unlocked even if older history is no longer available. Pickle Hall of Fame totals changed files, results, tool runs, and subagents, and lists the all-time leading Pickles, which you can open in the HUD. AI usage shows plan limits and the last 30 days of token usage. Automatic work classification is optional and is controlled in Hub → Settings → Notifications, permissions, and privacy.

Long work-history and model-usage tables scroll within their own area. Scroll inside a table to reach later rows; wide tables also scroll horizontally. Filtering, row order, and text selection are unchanged.

The top of Statistics → AI usage shows a Plan limits card for each Claude or ChatGPT subscription Picky is signed in to through Pi. Signed-out providers and free plans do not appear.

  • Each card shows the remaining share of the 5-hour Session and Weekly limits with their reset times, the number of available Limit resets, and Status and Dashboard links to the provider’s pages. A plan with only a weekly window shows No data for Session.
  • A tick on each bar marks what would be left at an even pace until the reset. Ahead of pace appears when the remaining share is more than 5 points below it.
  • Picky checks every 5 minutes; Refresh checks immediately. If a check fails, the card keeps the last values dimmed and says how old they are.
  • Show in menu bar adds that provider to a single usage item right of the Picky icon, showing each pinned logo with its remaining session and weekly share. Clicking anywhere on the item opens Plan limits.
  • The limits come from the providers’ undocumented usage endpoints and may show No data if a provider changes them.
  • Guides: step-by-step guides and release updates bundled with the app, so they work offline. Opening a card steps through its animations and screenshots with Previous and Next (or the arrow keys). Animations play unless Reduce Motion is on; the play button switches them either way. The same guides are readable on GitHub in English and Korean.
  • Quick Start: four guided flows: build a landing page, build a native app, learn an app, or organize files. Building and organizing open a new Pickle that interviews you first and confirms where to save before creating files; start in the default working directory or choose a folder. If a previous launch is still recoverable, resume it instead of creating a duplicate Pickle. Learn an app runs in the Picky conversation instead: bring the app to the front and talk to Picky with push-to-talk or quick input so it can see the screen and point at controls.
  • Schedule: a read-only calendar of schedules registered with the Cron plugin. It opens on By job, one row per job with a status mark for each day; click a mark to see that day’s runs. Month lists one-time jobs in each day and folds recurring jobs into one N repeating line that opens their list; Week shows runs by hour. Every view shows recorded runs and dashed projections for recurring jobs, a summary bar with the next run and the number of runs in the shown period, an agenda list, and filters; click a day entry to read or copy the instructions of that run. Create or manage schedules on the Plugins page by talking to Picky.
  • Plugins: three tabs. Extensions and Skills list the curated Pi plugin catalog by type; search or filter by category, view details, then install, update, remove, or set up supported plugins. MCP servers manages MCP servers. Changes apply to the main agent and live Pickles automatically.
  • Conversation: the Picky main-agent timeline and composer.
  • Web access: opens Picky in a browser on this Mac and pairs your phone to the same sessions. See 15.
  • Settings: grouped controls for Picky’s behavior, accounts, local data, and diagnostics.

Closing a guide, plugin detail, or settings confirmation returns keyboard focus to the control that opened it. With macOS Keyboard navigation enabled, press Space to activate that control again.

Conversation is the Picky main-agent chat. You can review Markdown-rendered prompts and replies, send a direct message from the bottom composer, or start a New session. Direct messages capture current desktop context through the same local-first flow as voice and Quick Input.

Picky’s background Tasks and its questions about handing work to a Pickle appear inside the conversation, in the turn where they started (see 5.2). A Task block follows the reply in which Picky started it; a question follows what Picky said right before asking. When a waiting question has scrolled out of view, a bar above the composer shows it with Answer, which scrolls back to it.

Once the daemon reports a session file, Hub also shows Copy resume command, which copies cd <cwd> && pi --session <file> so you can continue the same session in your own shell.

Picky never modifies your Pi coding-agent directory on launch. Plugin installation is opt-in. By default that directory is ~/.pi/agent, or the PI_CODING_AGENT_DIR configured in Settings/environment.

For every curated plugin, Hub shows its category, provider, use cases, description, and current install state. Search by name or command, or filter by category. The available actions are Install, Update, Remove, and, where a plugin needs it, Set up. Picky never removes a path it did not create.

When a recommendation changes for a plugin you already have, Hub shows why and offers a replacement. Existing Generative UI users now see Excalidraw recommended for visualization work. Install the replacement first, then confirm removal of the old plugin if you want to switch; Picky does not remove it automatically. Keep using hides that recommendation across app restarts, while the reason remains in the plugin’s details. Retired plugins remain manageable for existing users but are hidden from new installations.

The catalog includes tools such as /diff-review for native diff review, ask_user_question for structured clarification forms, delayed actions, local memory, clipboard access, and cross-agent bridges. It also includes:

  • Cron schedules local Pi jobs and configures a persistent macOS LaunchAgent during installation or explicit setup. Scheduled jobs run on Picky’s bundled Pi runtime, so no separate Pi install is needed. A scheduler set up before this keeps using the Pi it was set up with until you run Set up again. The patched update path lets active jobs finish before replacing an outdated running scheduler; it does not reinstall the LaunchAgent or start a stopped scheduler. A changed package path or agent directory requires a separate migration after work stops. An installed row provides View jobs, a read-only list of schedule and run status that never opens prompt contents, working directories, or run logs. Use Set up only when installation or an explicit migration requires LaunchAgent configuration. Removal asks for confirmation, runs Cron’s uninstall command, verifies that the LaunchAgent is unloaded, and only then removes the npm package.
  • Memory Layer — adds local remember, recall, memory_list, and forget tools so Pi can reuse durable memories across sessions.
  • Web Access (web_search, fetch_content), VCC Compaction, Bash Async (bash_async), and skill packages: Skill Creator, Excalidraw, tmux Terminal, Chrome DevTools, and A4 Word. Skills install as npm Pi packages. Some depend on local tools such as tmux or Chrome; their detail dialog lists what to set up the first time. Pickles always use the Bash Async version built into Picky; installing the plugin adds it to the main agent and Pi terminals.

Before installing, Hub checks your Pi directory for another copy that registers the same tool or skill name, such as a local extension folder or a different npm package. If it finds one, nothing is installed and the card shows a Duplicate badge with the conflicting paths. Remove duplicates uninstalls the duplicate npm packages and moves duplicate local folders to the Trash; anything it cannot remove is listed for manual cleanup. An already installed plugin with a duplicate shows the same badge, because Pi may use only one copy or load both.

When an install, update, or removal fails, Hub shows a short explanation of the cause instead of raw npm output.

A successful install, update, or removal applies to the main agent and every live Pickle without a manual reload. Idle sessions reload right away; a session that is working reloads when its current turn ends, so no work is aborted. Follow-ups sent while a reload is waiting are delivered after it; steers stay in the current turn. If a reload fails or times out, sessions keep the previous plugins and Hub shows the error with Retry.

Hub checks npm for newer versions of installed curated plugins when the Plugins page or Dashboard opens, and checks again on a later visit once the previous result is more than 10 minutes old. When an installed, non-pinned plugin has an update available, Update appears with its other actions. Plugins with updates, including bundled plugins replaced by a Picky update, are also listed together above the Plugins tabs with their current and new versions. Update All updates them one at a time; a failed update stays listed with its error and Retry while the rest continue.

Memory Layer and Cron install and update from the registry’s latest release, which includes the memory/cron safety fixes (Memory Layer 0.6.0 and Cron 0.4.0 or later). Picky holds an install or update only when it is pinned to an older version. Removal and explicit setup stay available. Existing installations are not automatically changed. Plugin reload alone does not replace every Picky or external Pi runtime. Before upgrading these packages outside Hub, stop old writers and active scheduled work, back up memory/session/cron data, and follow the extension safety cutover. Do not assume restarting Picky also stops external Pi terminals.

With the patched Cron extension, PTT pauses delivery to the main session until replacement input is accepted. If recording is cancelled without sending input, delivery remains paused until the next input or session replacement. Duplicated or handed-off Pickles get independent Pi session identities; existing session files are not rewritten automatically.

The MCP servers tab on the Plugins page connects Model Context Protocol servers through Pi’s built-in MCP support. Servers are stored in Pi’s global mcp.json (~/.pi/agent/mcp.json by default), so a server added in Hub is also available to Pi terminals, and servers added with pi mcp add appear in Hub.

  • Add server accepts one server entry ({"command": ..., "args": [...]} for stdio or {"url": ...} for streamable HTTP) plus a name, or a whole mcpServers block pasted from Claude Desktop, Cursor, or VS Code.
  • Available to chooses which agents connect: Main agent and Pickles (default) or Main agent only. Picky stores the second choice as "pickyScope": "main" in the server entry; Pi ignores this key.
  • Each row shows the connection state and tool count. HTTP servers that use OAuth show Sign in, which opens the authorization page in the browser; Pi stores the tokens in ~/.pi/agent/mcp-auth.json.
  • The Enabled switch and Remove edit the shared mcp.json, so they affect Pi terminals too.

Adding, removing, enabling, or changing a server’s scope applies to live sessions through the same automatic reload. MCP tools are reached through Pi’s codemode tool by default; a server’s exposure setting in mcp.json changes that. Every Pickle starts its own connections to the stdio servers in its scope.

Settings keeps its category jump links visible while you scroll through seven groups: General, Accounts and agents, Voice and input, Screen and overlays, Pickles and workspace, Notifications, permissions, and privacy, and Advanced and diagnostics. Group headings include a short summary; the Main Agent area further separates workspace and instructions, model and reasoning, screen capture, armed-Pickle delivery, and runtime paths into focused cards. Most toggles and menus save immediately. Directory and provider text fields retain their own drafts and show Save changes / Saved status.

The Accounts and agents group includes Pi OAuth connections for OpenAI Codex and Anthropic. Use Refresh to query the current status, Sign in or Reconnect to authenticate in your browser, and Disconnect to remove a provider after confirmation. ChatGPT also offers Sign in with code: copy the displayed code, open the sign-in page, and enter it there. Picky waits for approval and connects the account automatically; Cancel stops the attempt and clears the code. Claude uses browser sign-in only. Completing either sign-in or disconnect refreshes authentication for the current Picky/Pickle daemon sessions.

The controls at the bottom of the sidebar are always available:

  • Check for updates: runs the same check as Settings → General → Check now. Hidden in builds without automatic updates (Alpha), and dimmed while a check is in progress.
  • Dock: with one connected display, toggles that display’s HUD dock. With multiple displays, opens a picker with a visibility checkbox for every connected display. Each choice persists independently; opening a Pickle from a notification restores the required dock.
  • Send feedback (bug glyph): opens a feedback dialog from any Hub page. It supports Bug, Idea, or Other; text; up to 5 attachments (100 MB each, 250 MB total); and optional masked diagnostics. Send saves the feedback and copies of its attachments on this Mac, then closes the dialog; Picky collects diagnostics and sends it in the background, and resumes queued feedback after a restart. Feedback that fails, or whose delivery Slack did not confirm, stays listed at the top of the dialog with Retry or Send again and Discard, and a dot appears on the bug glyph. Send again may post the same feedback twice. If feedback is unavailable in the build/environment, sending is disabled.
  • Quit: asks for confirmation before terminating Picky. When saved settings require a fresh process, this becomes Restart.
  • Light/Dark icons: select and persist Hub’s appearance.

The installed Picky version and build number appear below these controls.