Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

## Plugins

| Plugin | Claude | Codex | Gemini | OpenCode | OpenClaw | Hermes | AgentSkills |
| Plugin | Claude | Codex | Agy | OpenCode | OpenClaw | Hermes | AgentSkills |
| --- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| [`mlx-agent`](https://github.com/cavi-ai/mlx-agent) — discover, verify, and wire local MLX models | ✓ | ✓ | — | ✓ | ✓ | ✓ | ✓ |
| [`obsidian-agent`](https://github.com/cavi-ai/obsidian-agent) — portable vault workflows over the official Obsidian CLI | ✓ | ✓ | ✓ | ✓ | — | — | ✓ |
| [`mlx-agent`](https://github.com/cavi-ai/mlx-agent) — discover, verify, and wire local MLX models | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`obsidian-agent`](https://github.com/cavi-ai/obsidian-agent) — portable vault workflows over the official Obsidian CLI | ✓ | ✓ | — | ✓ | — | — | ✓ |
| [`loop-killer`](https://github.com/cavi-ai/loop-killer) — end stop-hook re-prompt loops by clearing the active goal | ✓ | — | — | — | — | — | — |

The machine-readable source of truth is [`catalog.json`](catalog.json). Claude and Codex consume native marketplace projections. Gemini, OpenCode, OpenClaw, and Hermes use the discovery records under `providers/`, which link to each source repository's tested installer; those files do not claim a native marketplace protocol. Portable AgentSkills packages remain available from each plugin repository.
The machine-readable source of truth is [`catalog.json`](catalog.json). Claude and Codex consume native marketplace projections. Agy, OpenCode, OpenClaw, and Hermes use the discovery records under `providers/`, which link to each source repository's tested installer; those files do not claim a native marketplace protocol. Portable AgentSkills packages remain available from each plugin repository.

## Claude Code

Expand All @@ -37,15 +37,16 @@ The Codex projection at [`.agents/plugins/marketplace.json`](.agents/plugins/mar

These package projections are distribution artifacts, not independent workflow sources. Refresh one only from a reviewed upstream commit, update its `provenance.json`, and run the full catalog gate. Product development remains in the linked plugin repository.

## Gemini CLI
## Agy

Gemini discovery metadata is in [`providers/gemini/catalog.json`](providers/gemini/catalog.json). Each entry records the source repository's native installation command:
Agy discovery metadata is in [`providers/agy/catalog.json`](providers/agy/catalog.json). Each entry records the source repository's native installation command:

```sh
gemini extensions install https://github.com/cavi-ai/obsidian-agent
git clone https://github.com/cavi-ai/mlx-agent.git
agy plugin install ./mlx-agent/providers/agy
```

The command uses Gemini's native extension loader. The discovery catalog itself does not install anything. `mlx-agent` does not ship a Gemini extension.
The discovery catalog itself does not install anything. `obsidian-agent` does not ship an Agy plugin.

## OpenCode

Expand Down
6 changes: 3 additions & 3 deletions catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@
"repository": "cavi-ai/mlx-agent",
"license": "MIT",
"summary": "Discover, verify, and wire local MLX-optimized models on Apple Silicon.",
"hosts": ["claude", "codex", "opencode", "openclaw", "hermes", "agentskills"],
"hosts": ["claude", "codex", "agy", "opencode", "openclaw", "hermes", "agentskills"],
"packages": {
"claude": { "path": "." },
"codex": { "path": "packages/codex/mlx-agent" },
"agy": { "path": "providers/agy" },
"opencode": { "path": "providers/opencode" },
"openclaw": { "path": "providers/agentskills" },
"hermes": { "path": "providers/agentskills" },
Expand All @@ -22,11 +23,10 @@
"repository": "cavi-ai/obsidian-agent",
"license": "MIT",
"summary": "Run portable, safety-gated Obsidian vault workflows through the official Obsidian CLI.",
"hosts": ["claude", "codex", "gemini", "opencode", "agentskills"],
"hosts": ["claude", "codex", "opencode", "agentskills"],
"packages": {
"claude": { "path": "." },
"codex": { "path": "packages/codex/obsidian-agent" },
"gemini": { "path": "." },
"opencode": { "path": "providers/opencode" },
"agentskills": { "path": "providers/agentskills" }
}
Expand Down
4 changes: 2 additions & 2 deletions catalog.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
}
},
"$defs": {
"host": { "enum": ["claude", "codex", "gemini", "opencode", "openclaw", "hermes", "agentskills"] },
"host": { "enum": ["claude", "codex", "agy", "opencode", "openclaw", "hermes", "agentskills"] },
"package": {
"type": "object",
"additionalProperties": false,
Expand All @@ -38,7 +38,7 @@
"properties": {
"claude": { "$ref": "#/$defs/package" },
"codex": { "$ref": "#/$defs/package" },
"gemini": { "$ref": "#/$defs/package" },
"agy": { "$ref": "#/$defs/package" },
"opencode": { "$ref": "#/$defs/package" },
"openclaw": { "$ref": "#/$defs/package" },
"hermes": { "$ref": "#/$defs/package" },
Expand Down
13 changes: 13 additions & 0 deletions providers/agy/catalog.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "cavi-ai",
"host": "agy",
"protocol": "discovery",
"plugins": [
{
"name": "mlx-agent",
"repository": "cavi-ai/mlx-agent",
"package": "providers/agy",
"install": { "command": "git clone https://github.com/cavi-ai/mlx-agent.git && agy plugin install ./mlx-agent/providers/agy" }
}
]
}
13 changes: 0 additions & 13 deletions providers/gemini/catalog.json

This file was deleted.

8 changes: 4 additions & 4 deletions scripts/validate-catalog.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { createHash } from "node:crypto";
import path from "node:path";
import { fileURLToPath } from "node:url";

export const HOSTS = ["claude", "codex", "gemini", "opencode", "openclaw", "hermes", "agentskills"];
export const HOSTS = ["claude", "codex", "agy", "opencode", "openclaw", "hermes", "agentskills"];
// Marketplace identity: what users type after @ in `plugin install <name>@<marketplace>`.
export const MARKETPLACE = "cavi-ai";
// Every plugin the catalog may list. REQUIRED is the subset that must be present and ships a pinned Codex package.
Expand All @@ -20,8 +20,8 @@ const SOURCE_PATHS = { "mlx-agent": "providers/codex", "obsidian-agent": "." };
const MLX_EXCLUDED = [".mlx-agent-generated-files.json", "skills/*/scripts/mlx-agent-mcp", "skills/*/src/mlx_agent/mcp_server.py"];
const MLX_EXCLUSION_REASON = "Codex skills use the packaged CLI entrypoint; MCP transport artifacts are not required or distributed by this catalog.";
const DISCOVERY_COMMANDS = {
gemini: {
"obsidian-agent": "gemini extensions install https://github.com/cavi-ai/obsidian-agent"
agy: {
"mlx-agent": "git clone https://github.com/cavi-ai/mlx-agent.git && agy plugin install ./mlx-agent/providers/agy"
},
opencode: {
"mlx-agent": "git clone https://github.com/cavi-ai/mlx-agent.git && python3 mlx-agent/scripts/mlx-agent install opencode --scope user --dry-run --json",
Expand All @@ -39,7 +39,7 @@ const LEGACY = new Set(["claude-plugins", "claude-obsidian", "claude-obsidian-pl
const PROJECTIONS = {
claude: ".claude-plugin/marketplace.json",
codex: ".agents/plugins/marketplace.json",
gemini: "providers/gemini/catalog.json",
agy: "providers/agy/catalog.json",
opencode: "providers/opencode/catalog.json",
openclaw: "providers/openclaw/catalog.json",
hermes: "providers/hermes/catalog.json"
Expand Down
Loading
Loading