Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

PM Portfolios

Cross-board aggregation for Mission Control: group multiple boards into a named portfolio and see a unified status summary of total items, completed items and a status-bucket breakdown across every linked board.

Cross-board aggregation for Mission Control: group multiple boards into a named portfolio and see a unified status summary.

What it is

A portfolio is a named grouping of PM boards within a workspace. It lets you aggregate items across multiple boards for a unified view of total items, completed items, and a status-bucket breakdown.

Each portfolio has a title, optional description, and a list of linked boards. The aggregation works by loading each linked board's full data, finding its status column, running bucketByColumn (reused from the dashboard widgets), merging buckets across boards by key, and counting done items using each board's done-index setting.

Where to find it

Portfolios live in a Mission Control workspace. You create one there, give it a title and optional description, link the boards you want it to cover, and open its summary view to see the cross-board rollup. The same operations are exposed over the CLI routes listed under For agents, so a portfolio can also be built and read programmatically.

How it behaves

  1. Create -- workspace-scoped, with a title and optional description
  2. Link / Unlink boards -- add or remove boards from the portfolio
  3. View summary -- PortfolioSummary loads each linked board, buckets items by status, and merges across boards for a cross-board rollup
  4. Delete -- soft delete (is_deleted = 1) that cascades to board links within a transaction

For agents

Key files

  • src/shared/types/pm.ts (lines 359-373) -- PmPortfolio and PmPortfolioBoard interfaces
  • src/shared/ipc-schemas/pm-portfolios.ts -- Zod validation schemas for all 8 operations
  • src/main/db/queries-pm-portfolios.ts -- SQLite CRUD against pm_portfolios and pm_portfolio_boards tables
  • src/main/ipc/pm-portfolios-handlers.ts -- 8 IPC handler registrations
  • src/main/services/cli/pm/pm-portfolio-routes.ts -- CLI route registration
  • src/plugins/mission-control/web/lib/session-bridge-portfolios.ts -- frontend bridge wrappers (timed IPC calls)
  • src/plugins/mission-control/web/features/portfolios/PortfolioSummary.tsx -- aggregation UI (loads boards, buckets by status, merges)

Implementation notes

  • 9 IPC channels prefixed pm:portfolio: and pm:portfolio-*: list, get, create, update, delete, board list/link/unlink, plus pm:portfolios:changed push event
  • CLI routes: GET /pm/portfolios, GET /pm/portfolios/:id, POST /pm/portfolios, PATCH /pm/portfolios/:id, DELETE /pm/portfolios/:id, plus board link/unlink endpoints; feature-gated via pm_portfolios
  • Aggregation reuses bucketByColumn from the dashboard widget infrastructure
  • Soft delete cascades from portfolio to board links within a DB transaction

Related

mission-control.md is the parent feature doc, and mc-dashboards.md matters here because dashboards share the bucketByColumn aggregation logic this feature reuses. If what you want to roll up is not boards but objectives above them, pm-goals.md covers goal tracking, which sits one level higher. The full list of library pages is in INDEX.md.

Last verified 2026-09-23