Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Squad PodNew to Visual Studio Code? Get it now.
Squad Pod

Squad Pod

Preview

Brian Swiger

|
1 install
| (0) | Free
Pixel art office where your Squad agents come to life as animated characters
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Squad Pod: a pixel-art AI agent team

Squad Pod

Your Squad AI team, but make it pixel art.

Bring your Squad agent team into an animated pixel-art office in VS Code. Follow team activity, explore each agent's details, and build an office with its own layout, furniture, colors, and pets.

Available as a pre-release from Brian Swiger.

Features

  • See your team at work. Discover your Squad roster and watch animated characters walk, type, and read in the office.
  • Explore each agent. Open charter summaries, declared model metadata, observed tasks, and recent activity in Squad Info.
  • Follow live activity. Opt in to matching local Copilot CLI sessions for member tool labels, source-reported runtime models, transient subtasks, and context gauges when those fields are available.
  • Make the office yours. Edit floors, walls, furniture, colors, carpets, named Areas, and Claudio and Gitcat pets.
  • Launch on your terms. Save directories and explicitly launch Squad in a new VS Code terminal.
  • Review activity and usage. Browse observed events, source-provided usage and model history, and manually selected CLI usage exports in Telemetry.
  • Bring your own assets. Add local furniture, pets, and character sheets; use animated furniture at active desks and toggle supported states manually.

See Squad Pod in action

Watch Squad Pod: Big ideas. Tiny office. Animated office preview.

Watch the full 1:53 showcase (MP4) | Captions (SRT)

Big ideas. Tiny office. Meet the pixel squad, watch characters walk and work at their computers, explore the office controls, and meet Claudio and Gitcat.

The showcase uses staged activity in the production office renderer. It contains no private session logs or customer data.

AI narration: Ava (US English). Music: Brian Swiger's supplied DaVinci AI-generated soundtrack. Download the source MP3.

Requirements

  • VS Code 1.107 or later.
  • A Squad project with a .squad/team.md roster. Legacy .ai-team/team.md projects are also supported.
  • Node.js 22.13 or later to build from source.

Install the pre-release

Open Squad Pod in Visual Studio Marketplace, confirm the publisher is Brian Swiger, and choose the Pre-Release version in VS Code. You can also install it from a terminal:

code --install-extension brianswiger.squad-pod --pre-release

Open a reviewed Squad project, then run Squad Pod: Show Panel. Installing or opening the office does not launch Squad or an AI task. Build tools and Node.js are only required for source builds, not for installing the Marketplace extension.

Install from source

git clone https://github.com/swigerb/squad-pod.git
cd squad-pod
npm run install:all
npm run build

Open the project in VS Code and press F5 to launch the Extension Development Host.

Development commands

Command Description
npm run lint Lint the extension host
npm run check-types Type-check the extension and webview
npm run test:all Run extension and webview tests
npm run build Build the extension and webview
npm run verify Run lint, type checks, tests, builds, and provider smoke checks
npm run package Build a VSIX package

Use Squad Pod

Open the office

Open the Squad Pod panel, or run Squad Pod: Show Panel from the Command Palette. Team members are discovered from .squad/team.md; roster changes appear in the office. Click a character, its name (Enter or Space also works), or its occupied desk or chair to open the details card; select a character, then click another seat to move it. Choose Squad Info to expand a visible member's details by keyboard or mouse. Open charter opens that member's charter.md. In the read-only local observer, observed details remain available while charter contents and editor opening are unavailable. These actions never open a terminal.

Fit office explicitly fits and centers the current map in the panel using CSS-pixel dimensions, independent of display DPI. Very large layouts center at minimum zoom; pan or use Locate character beside an explicitly Off-screen name to find a member. Locate centers once, without enabling follow; names retain details-card navigation. Names, tools, context gauges and transient subtask notes use the rendered character bounds and measured annotation size to stay just above the head. A small pointer marks a modestly displaced label; when labels would overlap a character, crowd one another, or cannot fit near the top edge, an explicitly labeled scrollable list replaces floating labels instead of placing labels over people. Locate controls remain available for each member. Locating from that list collapses it so the character is visible and clickable; keyboard focus returns to Show office labels to reopen the list. Hide office labels also clears the crowded view manually. Fit/Locate stop an explicit mobile follow choice, but never move seats or save/change the office layout. Resizing does not automatically fit or chase idle members, so deliberate pan and zoom remain yours.

Squad Info keeps declared charter/JSON model metadata separate from opt-in runtime model observations. The latter use Copilot CLI's timestamped session.start/session.resume/session.model_change selection fields, or model identifiers emitted for assistant messages and tool calls. Root tool-call models are shown only when the observed call is positively identified as root-owned; member models appear only when a subagent or tool-call event links to one exact roster member. Each value shows its event field and producer timestamp. Ephemeral assistant.usage events, usage history, declarations, roles, and configuration guesses never fill a missing runtime value. Runtime observations clear when Live Activity is disabled, stale, switched to another session, or the subagent completes. Local reads remain bounded; executable squad.config.ts is never loaded. auto is shown as automatic selection, not a concrete model. Declared metadata is unavailable in the read-only observer.

Edit the office

Choose Layout in the toolbar to edit the office:

  • Paint all nine bundled floor styles and walls, adjust their colors, and place or color furniture. Floor 10 adds the remaining style; existing floors and empty tiles keep their meaning.
  • Paint decorative carpets with a style and main/accent colors.
  • Create named Areas, paint their tiles, and map launch directories to Areas to prefer those seats for observed agents. Turn the Area overlay on or off in Settings.
  • Add or remove Claudio and Gitcat; pets wander around the office and react when clicked.
  • Select and drag furniture to move it. Hold Alt when releasing to copy; press R to rotate. Ungrouped furniture rotates geometrically; grouped directional furniture cycles through available views. A desk moves or rotates with overlapping computers and lamps.
  • Use Undo and Redo for editor changes. A paint stroke is one step.
  • Export a layout or import a JSON layout from Settings. An import is a draft until you save it. If an incoming layout conflicts with an unsaved draft, review the versions and choose which one to keep before saving.
  • To try the bundled starter, run Squad Pod: Export Default Layout and import the file from Settings. Your saved office is replaced only when you explicitly save the draft.

Settings

The VS Code setting squad-pod.autoShowPanel focuses the panel once when the extension activates. It is off by default; changes apply the next time the extension activates. It does not launch Squad.

Roster and file observation does not require Copilot CLI authentication or an AI task. Live CLI log observation is a separate opt-in; recent-directory suggestions are a separate metadata read that you can disable with squad-pod.directorySuggestions.

In the office's Settings, sound notifications play a short chime when an active agent becomes inactive; Debug View opens agent and layout diagnostics; and Show Named Areas toggles the Area overlay. You can also add or unload local asset directories and import or export layouts.

Enable Live Activity in Settings and accept the VS Code confirmation to turn on squad-pod.liveActivity (off by default). It reads local Copilot CLI session metadata and events.jsonl for the newest Squad session matching the observed workspace. Exact roster matches animate existing members; running transient calls with explicit member parents can appear as temporary subtask characters. Short task descriptions, tool names, file basenames, command names and context counts are used; prompts, other arguments and outputs are never displayed or stored. Turning it off stops reading and clears live displays. Settings shows whether the source is off, searching, following or unavailable.

Task bubbles add fixed, source-labeled phrases such as CLI tool: Reading a file for active, live-attributed roster tasks. They copy no task text, arguments, filenames or outputs and clear with completed/unavailable/stale sources. The Task bubbles: On/Off button suppresses summaries in this view only, including read-only standalone viewers, without changing project settings or granting control/consent. Permission, wait, tool/history and context signals remain visible. Explicit inter-agent dialogue/handoffs are unsupported, never inferred from parent links or proximity. See the privacy and pinned-producer contract.

Telemetry → Observed transient tasks lists task calls from that same consented session, separately from recorded usage. Names, types, modes and bounded descriptions are display metadata, not durable membership. Only explicit same-session parent calls are linked; missing or cyclic parents are unknown. Unknown/non-general-purpose calls stay unattributed unless a matching custom-agent selection supplies an exact roster identity. Running child calls appear near their visible roster ancestor with Subtask / Parent labels; a small pointer is used only if modest crowding displaces a label. Producer instance IDs deduplicate them, not display names. An authoritative selected roster identity uses the existing member character without changing its seat or appearance. Temporary characters never become roster members or saved preferences, and disappear on completion, failure, cancellation, ended parents or source clearing. The in-memory list retains at most 64 tasks (16 recent completions), flags omitted data/shortened fields, and restores only in-flight calls on startup. Switching sessions, stale/lost sources and disabling Live Activity clear the list. Identity contract and source evidence explain why durable hierarchy and automatic roster promotion remain unsupported.

Launch Squad in a directory

In VS Code, open Directories to browse for a folder or enter its path manually. Workspace folders and saved directories each have an explicit Launch action. Squad Pod submits copilot --agent squad to a new terminal only after you select Launch; workspace trust and the Copilot CLI on PATH are required. Squad Pod does not auto-launch.

Recent launch requests are recorded when the command is submitted and do not prove the CLI started. Recent Squad directories can fill the manual-entry form from local Copilot CLI working-directory metadata, but never save or launch automatically; disable this read with squad-pod.directorySuggestions. The standalone observer selects its project at server startup and does not provide native directory browsing, management, or launch actions.

Activity and recorded usage

Open Telemetry in the toolbar to browse observed status changes, session activity, logs, orchestration events, and decisions. The drawer also displays historical usage from the local Squad usage ledger when available, including reported token and estimated-cost totals and recent model reports. These reports are historical source data, not live context utilization or billing records.

Activity events counts only observed events; Clear activity leaves recorded usage and observed tasks unchanged. Existing files are not replayed. Missing usage is not zero consumption, and enabling live CLI observation does not create a usage ledger. Source diagnostics distinguish file watching from opt-in live CLI observation; Observation settings and consent opens the existing Settings flow without enabling anything. The standalone observer can display the same live tools/context/tasks after explicit local CLI --live-activity opt-in; browser settings cannot enable private-log reads. With compatible opted-in owned terminals it selects an exact server-generated session UUID; otherwise diagnostics explicitly label matching-project selection or unavailable correlation.

Telemetry → Copilot CLI usage export is a separate, opt-in historical source for copilot --agent squad --usage-output-file <file.json>. Pod never launches this command, creates an export or discovers private home/session files. After an existing export is available, use Select CLI usage JSON... and confirm reading that exact workspace-local file. Refresh selected export rereads it manually; Forget export, workspace changes and extension restart discard the in-memory selection. Nothing is written to the source. Premium-request cost and nano-AI units retain their native units, never USD; model quantities and the Squad ledger are not summed together. Missing data stays missing. The importer currently has source-pinned synthetic fixture evidence only: real-export compatibility and native VS Code acceptance remain pending. Session/workspace/agent attribution and completeness are unknown. Standalone import is unavailable. See the CLI import contract and acceptance limits for provenance, interpreted fields and safety bounds.

Activity detection

Squad Pod watches the selected project's .squad/ files, including the roster, sessions, logs, orchestration logs, decision inbox, and agent files. It uses filesystem notifications with polling as a fallback and treats the initial scan as a baseline rather than replaying old files.

Descriptions inferred from those files are labeled File activity hint, not live tasks. HTML comments, structural headings, and empty scaffolding are excluded; a change without meaningful content uses a neutral File changed: <filename> hint. File hints clear after 30 seconds without activity. An observed Live task takes precedence until its live source finishes or expires; file observations cannot overwrite it. These descriptions never modify the underlying history files.

Known limitations

  • File-observed activity is approximate. Opt-in live activity reads best-effort local Copilot CLI session files, not a supported Squad Pod event API. The model projection is pinned to the shipped Copilot CLI 1.0.105 event declarations; this contract does not prove that a particular real session emitted a field. Unmatched members remain unattributed; stale or missing sessions fall back to file observations. Bounded scans may miss older in-flight members. Context gauges appear only when a live member's tool completion includes context metrics.
  • Directory launches do not switch the office's observed project.
  • Durable team hierarchy, automatic roster promotion, and remote access are not supported. The standalone observer is loopback-only; physical phone and tablet behavior is not yet verified.

Testing and acceptance

Start with the testing guide for the observer quick start, automated checks, synthetic acceptance helpers, VSIX verification, and committed evidence packages. Native VS Code and real Squad testing is a separate, approval-gated process in the native acceptance plan.

Showcase recordings use a synthetic host and staged activity to demonstrate the office. They are not native-host or real-producer acceptance evidence.

Custom assets

Add a local asset directory in Settings for furniture, pets, and character sheets. Folder layouts, supported images, reload behavior, and import limits are described in Custom asset manifests.

Local browser observer

You can also run the office in a browser with the separate, source-only local observer. It uses the same production renderer, observes an explicitly selected project, and is authenticated and loopback-only. Observation is read-only by default.

Separate authenticated options enable selected-project office controls and owned terminals. Office controls include layout editing, seat persistence, sound/debug/Areas settings, browser JSON import/export, and revision-protected draft recovery. Owned terminals explicitly run copilot --agent squad; neither option changes the read-only observation boundary. Native dialogs, directory management, and browser-managed private-log consent are unavailable in the observer.

See the build/run and security instructions for startup options and authentication requirements. The observer is separate from the Marketplace extension.

Architecture

  • src/ is the VS Code extension host. It discovers agents, watches Squad files, loads assets, and manages settings and layout persistence.
  • webview-ui/src/ is the React webview. It renders the office and provides the editor, character details, directories, and telemetry.
  • The extension host and webview communicate through typed messages.

Compared with Pixel Agents

Supported: Squad roster discovery, file-observed activity, opt-in live tool labels and context gauges, the animated office, layout editing, directional furniture groups, pets, local furniture assets, and explicit Squad CLI launches. The standalone local observer is authenticated and read-only by default; separately authenticated options provide selected-project office controls and owned terminals. Responsive mobile office and owned-terminal interactions include page navigation, touch pan/zoom, keyboard controls and deliberate clipboard actions.

Still limited or unverified: there is no supported Squad event API or remote-access mode, and persistent credentials are not supported. Browser touch emulation does not establish physical-device behavior; iOS/Android touch and software-keyboard behavior remain unverified.

How we built this

Squad Pod began with the question, What if Pixel Agents worked with Squad? A Simpsons-themed Squad team helped build the extension:

Agent Role Contribution
Homer Simpson Lead Architecture and code review
Lisa Simpson Core developer Extension host
Bart Simpson Frontend developer Webview and office
Marge Simpson Tester Tests and edge cases
Ned Flanders DevRel Documentation
Scribe Session logger Decisions and session notes

The original Pixel Agents by Pablo De Lucca watches Claude Code transcripts. Squad Pod adapts its virtual-office idea to Squad's team roster and files.

Roadmap

  • Adopt a supported Squad event API when available.
  • Visualize team ceremonies in the office.

Author and support

Squad Pod is a personal open-source project by Brian Swiger, a software developer and cloud architect with more than 30 years of experience in software engineering, application modernization, and cloud delivery. His work spans C#, .NET, Python, and AI-powered systems.

Website | Brian on LinkedIn | MightyBS on LinkedIn

For Squad Pod questions, bugs, or feature requests, open a GitHub issue. Squad Pod is not an official Microsoft or GitHub product.

Credits

Squad Pod is adapted from Pixel Agents by Pablo De Lucca. Character art is based on the work of JIK-A-4. Built for Squad by Brady Gaster. See THIRD_PARTY_NOTICES.md for licenses and attribution.

License

This project is licensed under the MIT License.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft