Collaborative AI built collaboratively
Symposium scans a Rust workspace, matches plugins against its dependency graph, and installs the corresponding skills, hooks, and MCP servers into the AI coding agents you use. Extensions are authored by crate authors and distributed through plugin sources, so an agent working in your project sees guidance specific to the crates that project depends on.
It ships as cargo agents, a Cargo subcommand. One agent-agnostic configuration is translated into the per-agent files each supported agent expects, so different people on the same project can use different agents.
- Requirements
- Installation
- Quick start
- Concepts
- How matching works
- Commands
- Configuration
- Supported agents
- For crate authors
- Documentation
- Community
- A Rust toolchain with
cargoonPATH. Symposium runscargo metadatato read the dependency graph andcargo installto update itself. - At least one supported agent installed.
- Linux, macOS, or Windows.
Install with cargo binstall (prebuilt binary) or cargo install (from source):
cargo binstall symposium # or: cargo install symposiumBoth provide the cargo-agents binary, invoked as cargo agents.
Run init once per machine to record which agents you use and register hooks:
cargo agents initinit prompts for your agents (select one or more) and for hook scope:
Which agents do you use? (space to select, enter to confirm):
> [ ] Claude Code
[x] Codex CLI
[ ] GitHub Copilot
[ ] Gemini CLI
[ ] Goose
[x] Kiro
[x] OpenCode
- Global hook scope (default) registers Symposium for the selected agents in your home directory, so it activates in every Rust project.
- Project hook scope writes hooks into the current project only; run
cargo agents synconce in each project to activate it there.
After setup, start your agent inside a Rust workspace as usual. With auto-sync enabled (the default), Symposium re-scans dependencies on each hook invocation and keeps the installed skills current. You can also run a sync explicitly:
cargo agents sync| Term | Meaning |
|---|---|
| Skill | A SKILL.md file (and its directory) containing guidance the agent loads as context. |
| Hook | A check or transformation that runs when the agent performs an action, such as writing code or running a command. |
| MCP server | Tools and resources exposed to the agent over the Model Context Protocol. |
| Plugin | A manifest that bundles skills, hooks, MCP servers, and subcommands, each gated by crate predicates. |
| Plugin source | A directory or git repository containing plugin manifests. The central recommendations repository and ~/.symposium/plugins/ are enabled by default. |
Symposium reads the workspace dependency graph and evaluates each plugin's and skill's predicates against it. An extension is installed only when its predicates match.
- The
cratesfield matches by crate name and version requirement (serde,serde >= 1.0,*). - The
predicatesfield uses function-call syntax (crate(...),shell(...),path_exists(...),env(...)), combined withnot,any, andall.
When a skill group declares source = "crate", Symposium fetches the matched crate's source (from the local path, the cargo registry cache, or crates.io), reads [package.metadata.symposium] from its Cargo.toml to locate the skills, and follows crate-to-crate redirects. See the predicates reference.
| Command | Description |
|---|---|
cargo agents init |
Record your agents and register hooks (writes ~/.symposium/config.toml). |
cargo agents sync |
Match plugins against workspace dependencies and install/refresh skills. |
cargo agents plugin |
Inspect and manage plugin sources. |
cargo agents self-update |
Install the latest published version. |
cargo agents crate-info |
Resolve and fetch a crate's source (used by agents). |
Global flags include -v/--verbose (decision trace), --json (structured output), and -q/--quiet. See the command reference.
Configuration is a single user-wide file at ~/.symposium/config.toml, created by init. The top-level keys:
| Key | Default | Description |
|---|---|---|
auto-sync |
true |
Run cargo agents sync automatically during hook invocations. |
agents-syncing |
true |
Mirror user-authored skills from .agents/skills/ into agents that use their own skill directory. |
hook-scope |
"global" |
Install hooks in the home directory (global) or the project (project). |
auto-update |
"on" |
off, warn (notify when a newer version exists), or on (install and re-exec). |
[[agent]] entries list your agents, [[plugin-source]] adds git or local plugin sources, and [defaults] toggles the two built-in sources. User data lives under ~/.symposium/ (overridable via SYMPOSIUM_HOME or the XDG variables). See the configuration reference.
Every agent receives skill installation. Hook registration is available for a subset; OpenCode and Goose are skills-only.
| Agent | Skill directory | Hooks |
|---|---|---|
| Claude Code | .claude/skills/ |
Yes |
| GitHub Copilot | .agents/skills/ |
Yes |
| Gemini CLI | .agents/skills/ |
Yes |
| Codex CLI | .agents/skills/ |
Yes |
| Kiro | .kiro/skills/ |
Yes |
| OpenCode | .agents/skills/ |
No |
| Goose | .agents/skills/ |
No |
If you maintain a Rust crate, you can ship skills, hooks, and MCP servers so AI-assisted users of your library get guidance matched to the exact version they depend on. Add a skills/ directory to your crate, control its layout with [package.metadata.symposium] in Cargo.toml, and register a plugin manifest in the recommendations repository.
See Supporting your crate and Authoring a plugin.
Full documentation lives at symposium.dev: installation, configuration, plugin and hook authoring, supported-agent details, and design notes.
Symposium is open source under MIT or Apache-2.0. We welcome contributors and maintain a code of conduct.
