Skip to content

symposium-dev/symposium

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,820 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Symposium

Symposium logo

Collaborative AI built collaboratively

crates.io Documentation License: MIT OR Apache-2.0

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.

Contents

Requirements

  • A Rust toolchain with cargo on PATH. Symposium runs cargo metadata to read the dependency graph and cargo install to update itself.
  • At least one supported agent installed.
  • Linux, macOS, or Windows.

Installation

Install with cargo binstall (prebuilt binary) or cargo install (from source):

cargo binstall symposium   # or: cargo install symposium

Both provide the cargo-agents binary, invoked as cargo agents.

Quick start

Run init once per machine to record which agents you use and register hooks:

cargo agents init

init 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 sync once 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

Concepts

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.

How matching works

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 crates field matches by crate name and version requirement (serde, serde >= 1.0, *).
  • The predicates field uses function-call syntax (crate(...), shell(...), path_exists(...), env(...)), combined with not, any, and all.

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.

Commands

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

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.

Supported agents

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

For crate authors

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.

Documentation

Full documentation lives at symposium.dev: installation, configuration, plugin and hook authoring, supported-agent details, and design notes.

Community

Symposium is open source under MIT or Apache-2.0. We welcome contributors and maintain a code of conduct.

About

AI the Rust Way

Resources

License

Code of conduct

Stars

194 stars

Watchers

5 watching

Forks

Packages

 
 
 

Contributors

Languages