Skip to content
/

GroundZero Package Manager (OpenPackage / opkg)

gpm-groundzero · groundzero-ai/gpm · ★ 557 · last commit 2026-05-11

Primitive shape
No installable primitives
00

Summary

GroundZero Package Manager (OpenPackage / opkg) — Summary

OpenPackage (opkg) is a TypeScript-based CLI package manager for AI coding agent configuration files — rules, commands, agents, skills, and MCP configs — that provides unified install, uninstall, sync, and packaging across 40+ AI coding platforms (Claude Code, Codex, Cursor, Kiro, Windsurf, Roo, OpenHands, Gemini CLI, Copilot, and many others).

Problem it solves: AI coding tools each store their configuration files (rules, commands, agents, skills, MCPs) in different directories with different naming conventions — managing these across multiple projects and platforms requires manual copying; OpenPackage provides a single opkg install <source> command that performs cross-platform conversion and installation automatically.

Distinctive trait: The only package manager in the batch with a Tauri-based desktop GUI (@opkg/gui), a path-based source-of-truth model with mutable vs. immutable source enforcement, and explicit support for 40+ AI coding platforms in a single platforms.jsonc configuration.

Target audience: Developers who work across multiple AI coding tools and need to manage rules, commands, agents, skills, and MCP configs consistently; team leads who want to share coding standards across tools.

Scope: TypeScript monorepo with CLI (opkg), core library (@opkg/core), and Tauri desktop GUI (@opkg/gui). 20 CLI subcommands covering install, uninstall, sync, add, remove, list, new, publish, pack, save, and more.

Differs from seeds: Unlike all seeds (which ship prompts/methodologies for Claude to follow), OpenPackage is a developer tool that manages the configuration files those methodologies live in. It's the file-system management layer beneath skill packs — "npm for agent configs" with cross-platform conversion.

01

Overview

GroundZero Package Manager (OpenPackage) — Overview

Origin

Created by Eric Lee (hyericlee). Package name opkg. Stars: 557 with 9 contributors. Apache-2.0. Active as of 2026-05-11. The GitHub repo is groundzero-ai/gpm but the package is named opkg/openpackage.

Note: The README explicitly names the product "OpenPackage" and the CLI binary opkg, though the GitHub slug is gpm. The GitHub URL appears to be a legacy name — "gpm" (groundzero package manager).

Philosophy

From the README:

"OpenPackage enables simple, modular management of coding agent configs, providing unified installation, management, and packaging of rules, commands, agents, skills, and MCPs for any platform, any codebase."

Design principles from specs/README.md:

  • Focused: Each command serves one clear purpose, avoiding overload.
  • Surgical: Strict separation of mutable development sources from immutable distribution snapshots, with enforcement via errors.
  • Simple: Paths are the universal source of truth; a single unified index manages all tracking.
  • Reliable: Built-in guards prevent common errors, like mutating published registry content.

Community

Discord: https://discord.gg/W5H54HZ8Fm

Self-Description

"It's basically a much more powerful, universal, and open source version of Vercel Skills and Claude Code Plugins."

This framing positions OpenPackage as a universal layer above both Vercel's skill format and Anthropic's plugin format.

Changelog Note

"The architecture introduces breaking changes with no automated migration — re-initialize workspaces."

The path-based model is a recent redesign; earlier versions had different architecture.

02

Architecture

GroundZero Package Manager (OpenPackage) — Architecture

Distribution

  • Type: npm CLI tool + Tauri desktop app
  • Install: npm install -g opkg
  • Binary: opkg (alias: openpackage)

Repository Structure (monorepo)

groundzero-ai/gpm/
├── bin/
│   └── openpackage      # Node.js CLI entry point
├── packages/
│   ├── cli/             # CLI package (@opkg/cli)
│   │   └── src/
│   │       ├── commands/ # 20 command files (.ts)
│   │       └── index.ts
│   ├── core/            # Core library (@opkg/core)
│   └── gui/             # Tauri desktop app (@opkg/gui)
│       ├── package.json  # Tauri + Vite
│       └── src-tauri/    # Rust (Tauri backend)
├── specs/               # Design specs for each command
├── schemas/             # JSON schemas
├── examples/            # Example packages
├── platforms.jsonc      # 40+ platform definitions
├── package.json         # name: opkg, version: 0.11.3
└── turbo.json           # Turborepo build config

Platform Coverage (platforms.jsonc)

40+ supported AI coding platforms with per-platform directory mappings:

Platform Skills Dir Commands Dir Rules Dir MCP Config
Claude Code .claude/skills/ .claude/commands/ .claude/rules/ .mcp.json
Claude Code Plugin .claude-plugin/skills/ etc. .mcp.json
Codex CLI .codex/skills/ .codex/prompts/ config.toml
Cursor .cursor/skills/ .cursor/commands/ .cursor/rules/ mcp.json
Kiro .kiro/skills/ .kiro/steering/ settings/mcp.json
OpenCode .opencode/skills/ .opencode/commands/ opencode.json
Gemini CLI
Windsurf .windsurf/skills/ .windsurf/rules/
Cline .cline/skills/ cline_mcp_settings.json
(30+ more...)

Directory Model

~/.openpackage/
├── packages/          # Mutable development sources
├── registry/          # Immutable versioned snapshots
│   └── <name>/<version>/
└── config.yml

<workspace>/
├── .openpackage/
│   ├── openpackage.yml       # Root manifest (dependencies)
│   └── openpackage.index.yml # Unified index (all tracked packages)
└── <platform dirs>            # Sync targets

Key Design: Mutable vs. Immutable

  • Mutable sources (packages/) — editable, can be modified via save/add
  • Immutable registry (registry/<name>/<version>/) — version-locked snapshots; save/add fail with error
  • The CLI enforces this separation: errors if you try to mutate registry content

Tauri GUI

@opkg/gui is a Tauri desktop application:

  • Runtime: Rust (Tauri) + TypeScript (Vite frontend)
  • Status: Ships in the monorepo but installation complexity not yet documented

Required Runtime

  • node>=18
  • npm
  • Rust + Tauri CLI (for GUI only)
03

Components

GroundZero Package Manager (OpenPackage) — Components

CLI Commands (20)

Command Purpose
opkg install <resource> Install files from a package/GitHub repo/URL into cwd for all platforms
opkg uninstall <package> Remove installed package files
opkg new <package-name> Create a new package
opkg save <file> Save workspace files to a mutable source package
opkg add <file> --to <package> Add specific file to a package
opkg remove <file> --from <package> Remove file from a package
opkg list List installed packages
opkg search <query> Search registry for packages
opkg publish Publish package to remote registry
opkg pack Create immutable versioned snapshot in local registry
opkg sync Sync packages across platforms
opkg set <key>=<value> Set configuration values
opkg configure Interactive configuration
opkg login Authenticate with remote registry
opkg logout Deauthenticate
opkg move <package> Move package to different scope
opkg view <package> View package details
opkg unpublish <package> Remove package from remote registry
opkg schema Show/validate package schema
opkg default Manage default configuration

Install Sources Supported

opkg install essentials                                    # Named registry package
opkg install gh@<owner>/<repo>                             # GitHub repo
opkg install gh@wshobson/agents --plugins ui-design        # GitHub with filter
opkg install https://github.com/<owner>/<repo>/<path>      # GitHub URL
opkg install <path-to-dir>                                 # Local path
opkg install git@<host>:<org>/<repo>.git                   # SSH git URL
opkg install https://gitlab.com/<org>/<repo>.git#<ref>     # Git URL with ref

Platform Conversion

On install, opkg converts files to per-platform conventions:

  • Renames files to match platform naming conventions
  • Places in correct platform subdirectories
  • Handles root-level files (CLAUDE.md, AGENTS.md, etc.)

Package Manifest (openpackage.yml)

name: <package-name>
version: <semver>
# ... dependencies, content paths

Unified Index (openpackage.index.yml)

Tracks all packages, sources, versions, and file mappings across the workspace. Single source of truth for what's installed and where.

Tauri Desktop GUI

@opkg/gui — Tauri-based desktop application for visual package management. Tech: Vite + TypeScript frontend, Rust backend.

Skills / Commands / Hooks / MCP

None — OpenPackage manages these files but does not ship any itself.

05

Prompts

GroundZero Package Manager (OpenPackage) — Prompts

OpenPackage ships no skill files, agent instructions, or prompts in this repository. It is a developer tool — the skills/prompts are the packages it manages, not content it ships itself.

Spec Documents as Design Prompts

The specs/ directory contains detailed command specification documents written in a style intended to be read by both humans and potentially agents:

From specs/README.md — Design Principles (excerpt)

#### Design Principles

- **Focused**: Each command serves one clear purpose, avoiding overload.
- **Surgical**: Strict separation of mutable development sources from immutable distribution snapshots, with enforcement via errors.
- **Simple**: Paths are the universal source of truth; a single unified index manages all tracking.
- **Reliable**: Built-in guards prevent common errors, like mutating published registry content.

From specs/architecture.md — Command Flow Diagram

Workspace ←──apply/install── Source/Registry (mutable or immutable)
Workspace ──save/add──────→ Source (mutable only; fails on registry)
Source ────pack───────────→ Registry (immutable snapshot)
CWD ───────publish────────→ Remote Registry

Technique analysis: The specs directory doubles as implementation guidance for Codex/Claude agents who might be building OpenPackage itself — the spec-driven architecture means the tool's own development follows the patterns it advocates.

Platforms Coverage Table (from README)

The 40-row platforms table in README.md is itself a structured prompt-style reference:

| Platform | Directory | Root file | Rules | Commands | Agents | Skills | MCP |
| Claude Code | .claude/ | CLAUDE.md | rules/ | commands/ | agents/ | skills/ | .mcp.json |
| Cursor | .cursor/ | | rules/ | commands/ | agents/ | skills/ | mcp.json |
...

Technique analysis: This table is the core knowledge artifact — it enables the CLI to perform cross-platform file mapping without hard-coded logic per platform (the table is read from platforms.jsonc).

09

Uniqueness

GroundZero Package Manager (OpenPackage) — Uniqueness

Differs from Seeds

OpenPackage occupies a unique position: it is a package manager for AI config files, not a skill framework. No seed framework does this.

  • Unlike all seeds (superpowers, BMAD, spec-kit, etc.) — which ship prompts/skills for agents to follow — OpenPackage manages the infrastructure that those skills live in.
  • The only other registry-oriented framework in this batch is TokRepo, but TokRepo is a cloud registry service; OpenPackage is a local file management CLI.
  • The Tauri desktop GUI is unique in the corpus — no other framework ships a desktop application.
  • The platforms.jsonc with 40+ platform definitions is the broadest cross-platform mapping in any framework in this batch.

Positioning

"npm for agent configs" — this is the tool you'd run before installing a skill pack, to ensure your environment is configured correctly for all your coding tools.

The self-description from the README:

"It's basically a much more powerful, universal, and open source version of Vercel Skills and Claude Code Plugins."

This is accurate: it generalizes both Vercel's skills install pattern and Anthropic's plugin system into a single universal CLI.

Most Interesting Design Choice

The mutable vs. immutable source separation with enforced errors when mutating registry content. This is a fundamental correctness guarantee that npm doesn't provide for published packages. It means teams can pin to a registry version and be confident it won't change silently.

The 40+ platform support via a JSON config (platforms.jsonc) means new platforms can be added without CLI code changes — the platform definitions drive the behavior.

Observable Failure Modes

  1. No content — OpenPackage manages configs but ships none. A new user needs to find a source package to install.
  2. Breaking changes warning — the architecture had recent breaking changes with no automated migration; existing users must re-initialize.
  3. GUI is early-stage — Tauri GUI is in the repo but has minimal documentation.
  4. Registry bootstrap — "install from registry" requires a registry to have content; the community registry at openpackage.dev must have sufficient packages to be useful.

Explicit Antipatterns

From the specs:

  • Mutating immutable registry content (enforced error)
  • Using save/add on registry sources (blocked)
04

Workflow

GroundZero Package Manager (OpenPackage) — Workflow

Primary Workflow: Install a Package

# Install from registry
opkg install gh@anthropics/claude-code --plugins code-review

# Install with specific components
opkg install gh@wshobson/agents --plugins ui-design --agents ui-designer

# Install from URL (exact path)
opkg install gh@wshobson/agents/plugins/ui-design/agents/ui-designer

On install:

  1. Resolve source (registry lookup / GitHub download / local path)
  2. Check mutability constraints (fails on immutable registry content)
  3. Convert files to per-platform conventions
  4. Install to platform-appropriate directories in cwd
  5. Update .openpackage/openpackage.index.yml

Package Creation Workflow

opkg new my-rules-package        # Create package scaffold
# Edit files in ~/openpackage/packages/my-rules-package/
opkg add .cursor/rules/clean.md --to my-rules-package   # Add files
opkg pack                        # Create immutable snapshot
opkg publish                     # Publish to remote registry

Cross-Platform Sync Workflow

opkg sync                       # Sync all installed packages to platform dirs

Phase-to-Artifact Map

Phase Artifact
new ~/.openpackage/packages/<name>/openpackage.yml
install Files in <platform-dirs>/, entry in openpackage.index.yml
pack ~/.openpackage/registry/<name>/<version>/ (immutable snapshot)
publish Remote registry entry

Approval Gates

None automated — all operations are explicit CLI invocations.

Mutable vs. Immutable Guard

If you try to save or add to a registry (immutable) source:

Error: Cannot mutate immutable registry content. Use `opkg save` with a mutable source.

This is the key quality gate: preventing accidental modification of versioned content.

06

Memory Context

GroundZero Package Manager (OpenPackage) — Memory & Context

State Storage

  • Type: File-based (YAML/JSON index files)
  • Persistence: Project-scoped (.openpackage/) + Global (~/.openpackage/)

State Files

File Purpose
.openpackage/openpackage.yml Root manifest (dependencies declaration)
.openpackage/openpackage.index.yml Unified index: all packages, sources, versions, file mappings
~/.openpackage/packages/<name>/openpackage.yml Global mutable source manifests
~/.openpackage/registry/<name>/<version>/ Immutable versioned snapshots
~/.openpackage/config.yml Global config

Index Architecture

The openpackage.index.yml is the central state file — it tracks:

  • Which packages are installed
  • Where each package's files came from (source tracking)
  • Which versions are installed
  • File mappings across platforms

This replaces fragmented per-package tracking found in earlier versions.

Cross-Session Handoff

Strong — the index survives session restarts. Any opkg sync will restore the expected state.

None — no semantic search. Package discovery is via registry search or direct source specification.

No Context Injection

OpenPackage doesn't inject context into agent sessions. It manages the files (skills, rules, commands) that other tools inject.

07

Orchestration

GroundZero Package Manager (OpenPackage) — Orchestration

Multi-Agent Support

No — OpenPackage is a developer CLI tool, not an agent orchestration framework.

Orchestration Pattern

None — sequential CLI commands, each independent.

Execution Mode

One-shot — each opkg command executes and returns. No daemon, no continuous mode.

Multi-Model

No.

Isolation Mechanism

The mutable vs. immutable source distinction is a form of isolation — but for the tool's own data, not for agent execution.

Automation Potential

OpenPackage commands are designed to be CI-friendly:

  • No interactive prompts by default
  • JSON output available
  • Can be run in install/deployment scripts

Example CI pattern:

opkg install gh@myorg/agent-standards

This could be run in project setup or CI to ensure agent configs are current across the team.

Git Automation

No — OpenPackage does not commit files or create PRs. It places files; git operations are manual.

Notes

OpenPackage is explicitly a tool for human developers managing agent configs, not an agent itself. The orchestration story is: a human (or setup script) runs opkg install to configure agent tools; then those configured agents do the actual work.

08

Ui Cli Surface

GroundZero Package Manager (OpenPackage) — UI & CLI Surface

Dedicated CLI Binary

Yes.

  • Binary name: opkg (alias: openpackage)
  • Install: npm install -g opkg
  • Subcommands: 20 (install, uninstall, new, save, add, remove, list, search, publish, pack, sync, set, configure, login, logout, move, view, unpublish, schema, default)
  • Is thin wrapper: No — has its own TypeScript runtime with commander.js CLI framework; uses lazy loading for fast startup
  • Config flag: --cwd <dir> to set working directory

CLI Design

From the source:

program
  .name('openpackage')
  .alias('opkg')
  .description('OpenPackage - The Package Manager for AI Coding')
  .version(getVersion())
  .option('--cwd <dir>', 'set working directory')

Commands are lazy-loaded via dynamic import() to minimize cold-start time.

Tauri Desktop GUI

Yes — @opkg/gui is a Tauri-based desktop application:

  • Type: desktop-app
  • Tech stack: Tauri + Rust backend + Vite/TypeScript frontend
  • Status: Included in monorepo; separate from CLI
  • Port: N/A (desktop app, not web)

Web Registry

https://openpackage.dev — web interface for browsing packages.

Observable Surfaces

  • CLI help output: opkg --help, opkg <command> --help
  • openpackage.index.yml — machine-readable install state
  • ~/.openpackage/registry/ — browsable local registry

Cross-Tool Portability

High — explicitly designed for 40+ platforms with platforms.jsonc defining per-platform mappings. Install once, deployed to all configured platforms.

Related frameworks

same archetype · same primary tool · same memory type

claude-mem (thedotmack) ★ 78k

Background worker service captures every tool call as an observation, AI-compresses sessions, and auto-injects relevant past…

pi (badlogic/earendil) ★ 55k

A minimal, hackable, multi-provider terminal coding agent that adapts to your workflows via npm-installable TypeScript Extensions…

Agent Skills (Addy Osmani) ★ 46k

Encodes senior-engineer software development lifecycle as 23 auto-routed skills and 7 slash commands for any AI coding agent.

wshobson/agents Plugin Marketplace ★ 36k

Single Markdown source for 83 domain-specialized plugins that auto-generates idiomatic artifacts for five AI coding harnesses.

TabbyML/Tabby ★ 34k

Self-hosted AI coding assistant server (alternative to GitHub Copilot) with admin dashboard, RAG-based completions, and multi-IDE…

Compound Engineering ★ 17k

Make each unit of engineering work compound into easier future work via brainstorm→plan→execute→review→learn cycles.