---
title: Developer Tools Group
---

# Developer Tools Group

## What it is

The **Developer Tools** group is a collapsible row in the Omniscio projects sidebar that gathers the build-and-run developer tooling into one place, so the sidebar stays tidy. It ships **collapsed by default** — click its chevron to expand.

### What's inside

Eleven tools can appear here, plus one launcher. (Foundry, RepoGuard and Nighty Tidy used to
nest here; on 2026-09-04 they moved to the sidebar's **Plugins** section — they are marketplace
plugins, and a plugin hidden inside a collapsed group has no other way in. See
[projects-sidebar.md](projects-sidebar.md).) Every one has its own on/off switch, so you will
usually see only a few — the group shows a member once that member is enabled. Collapsing the group
only hides the rows; it never disables the underlying features.

**Watching your work run**

- **Dev Pipeline** — a live control surface for the dev-pipeline workflow: pipeline runs, gate auto-advance, and the auto-lander. (A Lab feature — turn it on in Settings → Lab if you don't see it.) See [dev-pipeline-panel.md](dev-pipeline-panel.md).
- **Job Monitor** — a read-only dashboard of every long-lived test / build / dev process, with kill controls. (Its row is off by default — turn it on at Settings → Features.)
- **Running Apps** — live previews of the dev servers Omniscio launched. (Off by default — enable at Settings → Features.)
- **Test Regime Monitor** — a read-only, at-a-glance view of the health of your whole test setup. See [regime-status.md](regime-status.md).

**Getting work shipped**

- **PR Merge Queue** — surfaces every open GitHub pull request across the repos you've configured and sorts each into a lane by how safe or risky it is to merge, so you can see _why_ before you click Merge. See [pr-merge-queue.md](pr-merge-queue.md).
- **RepoGuard** — scans repositories for security vulnerabilities, dependency issues, configuration problems and code-quality concerns, and gives each a health score. (A Marketplace plugin.) See [repoguard.md](repoguard.md).
- **Nighty Tidy** — the code-maintenance audit panel (nightly audits + auto-fix). (A Marketplace plugin — turn it on in Settings → Plugins if you don't see it.)

**Understanding what happened**

- **Weekly Session Analysis** — a friction dashboard that mines your past agent sessions for timeouts, hook blocks, tool errors, and spend concentration, plus an opt-in weekly deep AI analysis. (A Lab feature — turn it on in Settings → Lab if you don't see it.)
- **Session Trajectory** — a read-only full log of every action one session took: every tool call in order, with its full input, full result, and per-call timing. See [session-trajectory.md](session-trajectory.md).
- **Bug Intake** — connects a bug source (Sentry, GitHub) so incoming reports land in your inbox. See [bug-report-intake.md](bug-report-intake.md).

**Building things**

- **Foundry** — a Marketplace plugin (id `prdstack`) that walks a rough idea up into a full product spec, by interview or automatically. See [prdstack.md](prdstack.md).
- **Gauntlet Loop** — runs a "gauntlet loop" over a written goal, iterating an artifact toward it. **Every run spawns real, paid agents**, so it is cost-gated. See [gauntlet-loop.md](gauntlet-loop.md).
- **Phone** — drives a connected Android phone over the local Android Debug Bridge. In development, off by default (Settings → Lab → Phone Control). See [phone-control.md](phone-control.md).
- **Extensions** — manages the Claude Code extensions Omniscio expects to be installed. See [mandatory-claude-extensions.md](mandatory-claude-extensions.md).

**Not a panel**

- **New Terminal** — a launcher: click it to open a terminal in the project you're currently working in. It greys out with a hint when you're not on a project that has files, and it only appears when the in-built Terminal feature is on.

## Where to find it

### How to use it

- Click the **chevron** on the left of the row to expand/collapse. The choice persists across launches.
- Click the **group row itself** (not the chevron) to open a small roll-up panel that lists the members; each one is a shortcut to open it directly.
- Click **New Terminal** to open a terminal in your active project. Not seeing it? The Terminal is a Lab feature — enable it first. Greyed out? Select a project that has files (a terminal always opens inside a real folder).
- To move a member out of the group for solo sidebar use, **drag it** to a new position or right-click and choose **Remove from Category**. Right-click the solo item and choose **Return to [group name]** to put it back.

## How it behaves

The group ships collapsed and remembers what you chose. Collapsing it only hides the rows — every tool inside keeps working — and a member appears only while that member is switched on, so most users see a short list rather than all eleven. Renaming, reordering or hiding the group is the same drag-and-drop the rest of the sidebar uses.

## For agents

`developer-tools-group` entry in `src/shared/integration-registry.ts`. **The registry is the source of truth for membership, not this page** — every member is a manifest in `src/shared/integrations/` carrying `parentGroupId: 'developer-tools-group'`, and the current set is whatever `git grep -l "parentGroupId: 'developer-tools-group'" -- src/shared/integrations` returns (14 at the time of writing: agent-friction, bug-intake, chrome-extensions, dev-pipeline-panel, gauntlet-loop, job-monitor, phone-control, pr-merge-queue, prdstack, regime-status, repoguard, running-apps, session-forensics, session-trajectory). Do not quote a hard count from this page — it drifts; run the grep. Adding a member is a one-line manifest change, so the list above is prose, not a contract. Render nesting is driven by `SIDEBAR_PARENT_GROUPS` + `consolidateChildrenUnderParent` in `src/renderer/src/features/dashboard/ProjectsSidebar.tsx` — render-only, no DB re-parent. Collapse state: `developerToolsGroupCollapsed` (default `true`).

**Tier precedence — group membership beats the Plugins split (I8).** Two members are ALSO plugin-classified: Running Apps is `tier: 'plugin'`, and Nighty Tidy is a marketplace child (`dividerId: null`). The Omniscio sidebar separately splits `tier: 'plugin'` rows into a **Plugins** section (`groupPluginIntegrations`), which runs AFTER consolidation — so without care it would rip Running Apps back out and let the null-divider NT2 truncate the split (both landing under Plugins instead of here). `computeSidebarDisplayItems` prevents this: it passes the consolidated child ids to `groupPluginIntegrations`, which NEVER pulls a group child into Plugins and EXTENDS the run across a null-divider child. Regressing this re-splits Running Apps + Nighty Tidy into Plugins — locked by the `sidebar native/plugin tier contract, I8`.

**Nighty Tidy is a MARKETPLACE plugin**, not a registry entry, so it can't carry a manifest `parentGroupId`. Its `__plugin_nightytidy2__` row is nested via `SIDEBAR_ROW_PARENT_GROUP` in `src/renderer/src/features/dashboard/sidebar-render-items.ts` — a small `folderPath → parentGroupId` map that `computeSidebarDisplayItems` (`src/renderer/src/features/dashboard/sidebar-grouping.ts`) folds into the group's child ids alongside the registry children. Still render-only + collapse-aware; a no-op when the plugin is disabled. The registry-children test stays green (NT2 is not a registry child). To nest another marketplace plugin, add its `__plugin_<id>__` path to that map.

**Group-end separators (I9).** A consolidated child draws only the **parent-group-end** hairline (`data-sidebar-group-end`, below the last child), never the **divider-group-end** (which marks a real `dividerId` boundary). Because NT2 carries `dividerId: null` while its Omniscio-builtin siblings carry the Omniscio divider id, keying the divider-group-end on dividerId inequality drew a spurious line above NT2 — it looked bracketed by two dividers. `computeRowGroupSeparators` (`src/renderer/src/features/dashboard/sidebar-render-items.ts`) suppresses the divider-group-end for any group child; locked by the `tier contract, I9`. Mobile draws no such hairline (indent only).

The **New Terminal** row is a group-specific extra rendered by `ProjectsSidebar` (`src/renderer/src/features/dashboard/DevToolsTerminalRow.tsx`), NOT a registry child — it opens a terminal in the active real-folder project, reusing the SessionsSidebar flow. Its enable-state and the SessionsSidebar "Open Terminal" button / Ctrl+T share the one helper `canOpenTerminalInProject()` (`src/renderer/src/features/terminal/can-open-terminal.ts`). See [projects-sidebar.md](projects-sidebar.md) and the `agent-tools contract`.

## Related

The tools that used to nest here moved to the sidebar's **Plugins** section, because they are marketplace plugins and a plugin hidden inside a collapsed group has no other way in — see [Projects sidebar](projects-sidebar.md).
