Skip to content

jmanuelcorral/squadcenter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

102 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 Squad Center

Desktop command center for orchestrating GitHub Copilot CLI sessions with Squad agent teams.

Electron React TypeScript TailwindCSS


πŸ“– What is Squad Center?

Squad Center is an Electron desktop application that lets you manage multiple software projects, launch GitHub Copilot CLI sessions, and monitor your Squad agent teams β€” all from a single interface.

Think of it as a mission control dashboard: you configure projects, spin up Copilot or shell sessions with integrated terminals, track agent activity in real time via Copilot hooks, and get notified when agents finish their work.

✨ Features

  • πŸ“ Project Management β€” Create, import from folders, configure, and archive projects with .squad/ team detection
  • πŸš€ Session Launcher β€” Start Copilot CLI or shell sessions per project with one click
  • πŸ–₯️ Integrated Terminal β€” Full interactive terminal powered by xterm.js and node-pty
  • πŸ‘₯ Squad Visualization β€” See your agent team roster with live status indicators
  • πŸ”” Real-time Notifications β€” Get alerts when agents complete tasks or encounter errors
  • πŸ”„ Copilot Hooks β€” Live activity timeline tracking prompts, tool usage, and session events
  • πŸ“Š Session Stats β€” Token usage, premium request counts, and per-session metrics
  • βš™οΈ Configurable β€” Shell selection, terminal fonts (NerdFonts), environment variables, pre-launch commands, Copilot CLI args
  • πŸ”Œ MCP Servers β€” View configured MCP servers per project
  • ☁️ Azure Account β€” Display active Azure account context in session sidebar

πŸ“Έ Screenshots

Dashboard

Dashboard Project overview with quick-access cards, session count, and archive management.

Project Details

Project Details Three-column project view: Squad team roster, session launcher with configuration, and session history with resume capability.

Active Session

Active Session Integrated terminal with live Copilot CLI output, activity timeline, token usage stats, and real-time hook events.

πŸ› οΈ Tech Stack

Layer Technology
Language TypeScript 5.8
Framework React 19
Build Tool Vite 6
Styling TailwindCSS v4
Desktop Electron 35
Terminal xterm.js 6 + node-pty
Routing React Router v7 (HashRouter)
Icons Lucide React
Testing Playwright (E2E)

πŸš€ Getting Started

Prerequisites

  • Node.js 22+ and npm
  • GitHub Copilot CLI installed and authenticated
  • Squad agent configuration (optional β€” for team features)

Install

Choose your preferred installation method:

πŸ“¦ npm (all platforms)

npm install -g squad-center
squad-center

🍫 Chocolatey (Windows)

choco install squad-center

πŸͺŸ winget (Windows)

winget install jmanuelcorral.SquadCenter

🐧 apt (Debian/Ubuntu)

# Add the GPG key
curl -fsSL https://jmanuelcorral.github.io/squadcenter/gpg-key.public \
  | sudo gpg --dearmor -o /usr/share/keyrings/squad-center.gpg

# Add the repository
echo "deb [signed-by=/usr/share/keyrings/squad-center.gpg] https://jmanuelcorral.github.io/squadcenter/apt stable main" \
  | sudo tee /etc/apt/sources.list.d/squad-center.list

# Install
sudo apt update && sudo apt install squad-center

πŸ“₯ Direct download

Grab the latest installer from GitHub Releases:

  • Windows: Squad-Center-Setup-x.y.z.exe
  • macOS: Squad-Center-x.y.z-arm64.dmg
  • Linux: Squad-Center-x.y.z.AppImage or squad-center_x.y.z_amd64.deb

Development Setup

# Clone the repository
git clone https://github.com/jmanuelcorral/squadcenter.git
cd squadCenter

# Install dependencies (includes native module compilation for node-pty)
npm install

# Start in development mode
npm run dev

The Electron app will launch with hot-reload enabled for both the renderer (React) and main process.

πŸ“œ Scripts

Script Description
npm run dev Start Electron app in development mode with hot-reload
npm run build Build the renderer (Vite) and main process for production
npm run preview Preview the production build
npm test Run the full Playwright E2E test suite
npm run test:prereqs Run only the prerequisites check tests
npm run test:e2e Build then run the full E2E suite

πŸ“‚ Project Structure

squadCenter/
β”œβ”€β”€ electron/              # Electron main process
β”‚   β”œβ”€β”€ main.ts            # App entry point, window creation
β”‚   β”œβ”€β”€ preload.ts         # IPC bridge (contextBridge)
β”‚   β”œβ”€β”€ hooks-server.ts    # HTTP server for Copilot hook callbacks
β”‚   β”œβ”€β”€ ipc/               # IPC handler modules
β”‚   β”‚   β”œβ”€β”€ projects.ts    # Project CRUD operations
β”‚   β”‚   β”œβ”€β”€ sessions.ts    # Session lifecycle management
β”‚   β”‚   β”œβ”€β”€ filesystem.ts  # Folder browsing for import
β”‚   β”‚   β”œβ”€β”€ notifications.ts
β”‚   β”‚   └── hooks.ts       # Hook event queries
β”‚   └── services/          # Core backend services
β”‚       β”œβ”€β”€ session-manager.ts    # PTY process management
β”‚       β”œβ”€β”€ storage.ts            # JSON file persistence
β”‚       β”œβ”€β”€ squad-reader.ts       # .squad/ directory parser
β”‚       β”œβ”€β”€ hook-manager.ts       # Copilot hooks lifecycle
β”‚       β”œβ”€β”€ hooks-generator.ts    # Hook script generation
β”‚       β”œβ”€β”€ hook-event-store.ts   # Hook event storage
β”‚       β”œβ”€β”€ event-bridge.ts       # IPC event broadcasting
β”‚       └── environment-info.ts   # System context (Azure, MCP)
β”œβ”€β”€ src/                   # React renderer process
β”‚   β”œβ”€β”€ main.tsx           # React entry point
β”‚   β”œβ”€β”€ App.tsx            # HashRouter, routes, providers
β”‚   β”œβ”€β”€ index.css          # Tailwind v4 + custom animations
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ Dashboard.tsx       # Project grid, modals
β”‚   β”‚   β”œβ”€β”€ ProjectView.tsx     # Project detail (3-column)
β”‚   β”‚   └── SessionView.tsx     # Terminal + sidebar panels
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Layout.tsx          # App shell with sidebar
β”‚   β”‚   β”œβ”€β”€ Sidebar.tsx         # Navigation + session count
β”‚   β”‚   β”œβ”€β”€ SessionTerminal.tsx # xterm.js terminal (PTY/message modes)
β”‚   β”‚   β”œβ”€β”€ ActivityTimeline.tsx # Hook event stream
β”‚   β”‚   β”œβ”€β”€ ProjectCard.tsx     # Dashboard project card
β”‚   β”‚   β”œβ”€β”€ TeamPanel.tsx       # Agent team roster
β”‚   β”‚   └── ...                 # Modals, panels, inputs
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”œβ”€β”€ useIpcEvents.ts     # Electron IPC event subscriptions
β”‚   β”‚   └── useNotifications.tsx # Notification context provider
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   └── api.ts              # IPC invoke wrappers (23 channels)
β”‚   └── types/
β”‚       └── electron.d.ts       # Window.electronAPI declarations
β”œβ”€β”€ shared/
β”‚   └── types.ts           # Shared TypeScript interfaces
β”œβ”€β”€ e2e/                   # Playwright E2E tests (7 spec files, 46 tests)
β”œβ”€β”€ index.html             # Vite entry HTML
β”œβ”€β”€ vite.config.ts         # Vite + Electron plugin config
β”œβ”€β”€ tsconfig.json          # TypeScript config
└── playwright.config.ts   # E2E test configuration

βš™οΈ Configuration

Each project in Squad Center can be individually configured:

interface CopilotConfig {
  args: string[];              // Extra Copilot CLI arguments
  envVars: Record<string, string>; // Environment variables for sessions
  preCommands: string[];       // Commands to run before session start
  startCopilot?: boolean;      // Auto-start Copilot on project open
  shell?: string;              // Shell executable (e.g., powershell, bash)
  terminalFontFamily?: string; // Terminal font (NerdFont support)
  terminalFontSize?: number;   // Terminal font size
}

Configuration is set per-project through the Project Config modal in the UI.

πŸ§ͺ Testing

Squad Center uses Playwright for end-to-end testing against the built Electron application.

# Run all tests
npm test

# Run with build step
npm run test:e2e

# Run a specific test file
npx playwright test e2e/03-dashboard.spec.ts

Test coverage β€” 7 spec files covering:

File Scope
01-prerequisites.spec.ts Environment and dependency checks
02-app-launch.spec.ts Electron window creation and loading
03-dashboard.spec.ts Dashboard rendering and interactions
04-project-management.spec.ts Project CRUD operations
05-project-config.spec.ts Configuration modal and persistence
06-navigation.spec.ts Routing and navigation flows
07-ipc-communication.spec.ts IPC channel communication
08-notifications-hooks.spec.ts Notifications pipeline & hooks

πŸ—οΈ Building

The app is built using Vite with the vite-plugin-electron plugin, which handles both the renderer (React) and main process (Electron) compilation.

# Production build (renderer + main process)
npm run build

The build outputs to:

  • dist/ β€” Renderer bundle (React app)
  • dist-electron/ β€” Main process bundle (main.js, preload.js)

🀝 Contributing

Squad Center is built using a Squad agent team workflow. The team configuration lives in .squad/ and includes:

  • Neo β€” Lead architect and coordinator
  • Morpheus β€” Backend developer (Electron main process, IPC, services)
  • Trinity β€” Frontend developer (React, UI components, UX)
  • Tank β€” DevOps engineer (CI/CD, packaging, release pipelines)

Architectural decisions are documented in .squad/decisions.md.

πŸ“„ License

MIT β€” see LICENSE for details.

About

A tool for use and monitorize multiple squad projects

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors