Skip to content

adamNewell/loadout

Repository files navigation

Loadout

Loadout is a native macOS menu bar utility for managing agent skills and MCP servers across global and repo-local configuration. It gives engineers an extension-manager style view of what is installed, what is active for the selected project, what is duplicated, and what can be changed safely.

Loadout is built for developers who already work in tools such as Codex, Claude, .agents compatible CLIs, and MCP-enabled editor or agent setups. It does not try to own your workflow. It reads the configuration already on disk and gives you a safer control surface for common changes.

Screenshots

Manager

Loadout manager window showing the registry and issues pane

Configuration Health

Loadout configuration health view showing duplicate resolution controls

Menu Bar

Loadout menu bar popover with quick project and configuration controls

What It Does

  • Shows global and project-level skills and MCP servers in one registry.
  • Keeps the selected project across app restarts and tracks recent projects.
  • Groups global items above project items, with collapsible enabled and disabled sections.
  • Filters by source family: All, .agents, .codex, .claude, and Other.
  • Enables, disables, archives, and deletes editable skills.
  • Disables and archives editable MCP entries in .mcp.json and Codex config.toml.
  • Detects duplicate or conflicting global/project definitions.
  • Detects .agents compatible skill overlap with tool-specific skill folders such as .codex/skills.
  • Renders SKILL.md content with parsed frontmatter and an associated file browser.
  • Reveals source paths in Finder from the manager.
  • Stores recoverable archive and disabled-skill records under Application Support.

Project Selection

Loadout does not inspect the focused terminal to guess a project. The app uses an explicit selected project model:

  1. Choose a project from the menu bar popover or manager toolbar.
  2. Loadout resolves the selected directory to a git repo root when possible.
  3. The selected project is persisted across restarts.
  4. Recent projects remain available from the menu bar and manager.

This keeps the app independent of terminal-specific automation APIs and works consistently across iTerm2, Kitty, Ghostty, WezTerm, Terminal, editor terminals, and plain Finder-selected folders.

Configuration Sources

Global skills:

  • ~/.codex/skills
  • ~/.agents/skills
  • ~/.claude/skills

Project skills:

  • <project>/.agents/skills
  • <project>/.codex/skills
  • <project>/.claude/skills
  • <project>/skills
  • <project>/plugin/*/skills

MCP servers:

  • Global Codex MCP entries in ~/.codex/config.toml
  • Project MCP entries in <project>/.mcp.json

Read-only sources, such as plugin cache or system-managed folders, are shown for visibility but mutation controls are disabled.

Safety Model

Loadout prefers recoverable changes where practical:

  • Disable skill: moves the skill folder to ~/Library/Application Support/Loadout/DisabledSkills.
  • Enable skill: restores a disabled skill to its original path.
  • Archive skill: moves the skill folder to ~/Library/Application Support/Loadout/Quarantine.
  • Archive MCP entry: snapshots the config file, removes the active entry, and stores archive metadata.
  • Disable or delete MCP entry: removes the active config entry and writes a .bak backup first.
  • Delete skill: permanently removes the active or disabled skill folder.

Configuration health decisions use the same safety model. Exact duplicates are deactivated. Conflicting definitions are archived when a decision replaces an editable copy.

Build From Source

Requirements:

  • macOS 14 or newer
  • Swift 6 toolchain
  • Xcode command line tools

Run tests:

swift test

Build a development app bundle:

./scripts/build-app.sh

Build a release app bundle:

CONFIGURATION=release ./scripts/build-app.sh

The script prints the generated .app path under SwiftPM's build directory.

Release Artifact

Production releases should be Developer ID signed and notarized. Use the signed release script once a Developer ID Application certificate and notarytool profile are configured:

SIGN_IDENTITY="Developer ID Application: Name (TEAMID)" \
NOTARY_PROFILE="loadout-notary" \
APP_VERSION="0.1.0" \
./scripts/release-app.sh

The default release artifact is a notarized DMG with Loadout.app and an Applications shortcut. PACKAGE_FORMAT=zip creates a notarized app zip instead, and PACKAGE_FORMAT=both creates both.

Use DMG for public releases. ZIP is acceptable for direct technical distribution. PKG is not needed unless Loadout later installs privileged helpers, launch daemons, command-line tools outside the app bundle, or files in multiple system locations.

Development Notes

The app is a Swift Package Manager executable target that builds into an app bundle through scripts/build-app.sh.

Useful commands:

make test
make build
make app
make release-app
make signed-release

Main implementation areas:

  • Sources/Loadout/Registry: inventory, source classification, overlap detection, diagnostics
  • Sources/Loadout/Config: MCP config parsing, mutation planning, and writing
  • Sources/Loadout/Quarantine: archive storage and restore behavior
  • Sources/Loadout/UI: menu bar, manager window, registry, inspector, diagnostics, archive
  • Sources/Loadout/Context: selected project and recent project persistence

About

Native macOS menu bar manager for agent skills and MCP servers

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors