Skip to content

Dag7/jam

Repository files navigation

Jam

Jam

AI Agent Orchestrator — run a team of AI agents from your desktop with voice control.

Release Platform License

Preview

Jam Preview

Quick Start

git clone https://github.com/Dag7/jam.git
cd jam
./scripts/setup.sh
yarn dev

The setup script handles everything: Node version, Yarn 4 via Corepack, dependencies, and verification. Just clone and run.

Requires: Node.js >= 22 (the script will install it via nvm/fnm if needed)

Download

Pre-built binaries — no setup needed:

Platform Download
macOS Jam.dmg
Windows Jam-Setup.exe
Linux Jam.AppImage

macOS builds are signed and notarized with Apple Developer ID — no Gatekeeper warnings.

What is Jam?

Jam lets you create, manage, and talk to a team of AI coding agents running on your machine. Each agent gets its own terminal, personality, voice, and workspace.

Features

  • Multi-agent orchestration — Run multiple AI agents simultaneously, each in their own PTY
  • Voice control — Talk to your agents hands-free with STT/TTS (Whisper + ElevenLabs/OpenAI)
  • Agent runtimes — Supports Claude Code, OpenCode, Codex CLI, and Cursor as backends
  • Living personalities — Each agent has a SOUL.md that evolves over time
  • Conversation memory — Agents remember past conversations across sessions
  • Dynamic skills — Agents auto-generate reusable skill files from learned patterns
  • Chat + Stage views — Unified chat or grid view showing all agents at once
  • Per-agent voices — Assign unique TTS voices to each agent
  • Command routing — Voice commands are routed to the right agent by name

Architecture

┌─────────────────────────────────────────────┐
│                  Desktop App                 │
│            (Electron + React + Zustand)      │
├─────────────────────────────────────────────┤
│  Orchestrator                               │
│  ├── AgentManager (lifecycle, PTY, execute) │
│  ├── VoiceService (STT/TTS pipeline)        │
│  ├── EventBus (cross-cutting events)        │
│  └── MemoryStore (file-based persistence)   │
├─────────────────────────────────────────────┤
│  Agent Runtimes                             │
│  ├── Claude Code  (claude CLI)              │
│  ├── OpenCode     (opencode CLI)            │
│  ├── Codex CLI    (codex CLI)               │
│  └── Cursor       (cursor-agent CLI)        │
├─────────────────────────────────────────────┤
│  Voice Providers                            │
│  ├── STT: Whisper / ElevenLabs              │
│  └── TTS: OpenAI / ElevenLabs              │
└─────────────────────────────────────────────┘

Configuration

Prerequisites

  • At least one agent runtime CLI installed: Claude Code, OpenCode, Codex CLI, or Cursor
  • API keys for your preferred voice providers (optional, for voice features):
    • OpenAI API key (for Whisper STT and/or OpenAI TTS)
    • ElevenLabs API key (for ElevenLabs STT and/or TTS)

First Launch

  1. Launch Jam
  2. Open Settings (gear icon in sidebar)
  3. Add your API keys for voice providers
  4. Create an agent — pick a name, runtime, model, and voice

Agent Workspace

Each agent gets a directory at ~/.jam/agents/<name>/:

~/.jam/agents/sue/
├── SOUL.md              # Living personality file
├── conversations/       # Daily JSONL conversation logs
│   └── 2026-02-18.jsonl
└── skills/              # Agent-created skill files
    └── react-patterns.md

Development

Requirements

  • Node.js >= 22 (Vite 7 requires 22.12+)
  • Yarn 4 (managed automatically via Corepack)

Commands

Command Description
yarn dev Start desktop app in dev mode
yarn build Build all packages
yarn typecheck Type check all packages

Project Structure

packages/
  core/           # Domain models, port interfaces, events
  eventbus/       # In-process EventBus
  agent-runtime/  # PTY management, agent lifecycle, runtimes
  voice/          # STT/TTS providers, command parser
  memory/         # File-based agent memory
apps/
  desktop/        # Electron + React desktop app

Design Principles

  • SOLID — depend on abstractions (port interfaces in @jam/core)
  • Strategy pattern — pluggable runtimes and voice providers
  • Observer pattern — EventBus for decoupled event propagation
  • Container/Component — React containers wire to Zustand, components stay pure

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages