Skip to content

Extensions

Syrus plugins

Browse the plugin gems bundled with Syrus. Each plugin documents the extension points it owns, when to enable it, and how it fits into a Syrus installation.

Admin MySQL

observability

Admin MySQL exposes the live state of a Syrus instance's MySQL server: process list, connection pressure, slow-log configuration, statement digests, and targeted query termination. It is intentionally operator-facing and disabled by default because it surfaces database internals and control actions. Use this plugin when a deployment runs against MySQL and needs real-time production diagnosis without shelling into the database pod. SQLite-backed installations do not need it.

Browser (Playwright)

mcp_tool_set

Browser gives workflow agents a constrained Playwright browser for visual review and preview validation. Agents can navigate, click, fill forms, capture screenshots, and submit visual artifacts while Syrus restricts navigation to the step's own loopback preview. The plugin is designed for UI work where code review alone is not enough. It keeps browser automation auditable and local to the workflow so agents can inspect visible behavior without gaining arbitrary network access.

Claude Agent

agent

Claude Agent connects Syrus workflows and chats to the Claude CLI/provider adapter. It handles agent invocation, transcript capture, provider availability evidence, and the same workflow-side MCP tool surface used by implementation, review, repair, and chat turns. Enable this plugin when a Syrus instance should offer Claude-backed automation. It can run alongside other agent-provider plugins so jobs and chats choose the appropriate provider per workflow.

Codex Agent

agent

Codex Agent connects Syrus workflows and chats to Codex. It provides the provider adapter used for implementation, review, repair, coding handoff, and interactive chat sessions, while feeding provider availability and failure classification back into Syrus' admission and retry systems. Enable this plugin when a Syrus instance should offer Codex-backed automation. It is independent from the Claude plugin, so operators can run either provider or both.

Discord

platform_delivery

Discord adds a platform-delivery channel for Syrus chat. It links Discord users to Syrus accounts, listens for direct messages through the Gateway, and delivers chat replies back to Discord so operators can interact with Syrus away from the web UI. The plugin is disabled by default because it requires Discord credentials and a running Gateway connection. Once configured, it behaves as another chat surface rather than a separate automation engine.

django

language

`django` is a Syrus plugin gem that bundles Django-framework-specific intelligence into a single `PluginRegistry.register` call. It lives at `plugins/django/` inside the Syrus repository and `depends_on: [ "python" ]`: enabling `django` in Admin → Plugins cascades to enable `python`, and disabling `python` while `django` is enabled surfaces a confirm-and-cascade-disable prompt. See `config/syrus_docs/plugins.md` for the general `depends_on` mechanism. Python-generic capabilities that aren't specific to Django — uv/poetry/pip prepare detection, pytest grader failure detail, and the venv/uv activation prompt reminder — live in the separate `python` plugin (`plugins/python/`) instead, so non-Django Python projects (Flask, FastAPI, plain scripts) can use them too.

Git History

observability

Git History adds a repository tab that traces commits back to the Syrus work that produced them. It connects Git commits to jobs, epics, chats, issues, cron tasks, and landing activity so operators can answer why a commit exists and which automation path created it. This plugin is useful for auditability and debugging confusing branch history. It reads local bare clones maintained by Syrus and presents the history in the app without changing repository behavior.

GitHub Source

input_source

GitHub Source is Syrus' built-in GitHub integration. It polls issues and pull requests, opens and updates PRs, reads check state, performs landing operations, and supplies the source-control primitives other workflows rely on. For most Syrus installations this is core infrastructure and is not disableable. Future source plugins can follow the same extension points, but GitHub remains the default path for issue-to-PR automation.

go

language

`go` is a Syrus plugin gem that bundles Go-generic intelligence into a single `PluginRegistry.register` call. It lives at `plugins/go/` inside the Syrus repository and applies to any Go project — there's no framework-specific split here the way `django` splits out of `python`, since net/http, Gin, Echo, etc. don't share a single web-serving convention.

javascript

language

`javascript` is a Syrus plugin gem that bundles Node/JS (and TS) prepare detection and dev-server preview hosting into a single `PluginRegistry.register` call. It lives at `plugins/javascript/` inside the Syrus repository. Named for language parity with `ruby`/`python` rather than `node`, since npm/yarn/pnpm/bun + `package.json` detection is identical for JS and TS repos.

Linear Source

input_source

Linear Source connects Syrus to Linear teams and issues. It lets operators ingest Linear work into Syrus jobs and epics while preserving Linear as the planning system of record. The plugin is disabled by default because it requires Linear credentials and team selection. It complements GitHub Source: Linear can provide the work intake while GitHub remains the code and PR backend.

MySQL DB Browser

observability

MySQL DB Browser lets admins register external MySQL connections, inspect schemas, browse table contents, and run controlled queries from the Syrus admin UI. Credentials are stored encrypted and connections are explicit per database target. This plugin is separate from Admin MySQL: Admin MySQL inspects Syrus' own runtime database, while MySQL DB Browser is for operator-managed external databases that Syrus may need to inspect.

Preview Tools

mcp_tool_set

Preview Tools gives planning-mode chat agents a safe scratch area for building lightweight HTML, CSS, and JavaScript previews. The tools are scoped away from repository checkouts, so agents can mock up ideas and show interactive artifacts without modifying project code. Use this plugin when chat should support exploratory UI sketches before a real job is filed. It is intentionally separate from repository preview providers, which run actual application code from workflow workspaces.

python

language

`python` is a Syrus plugin gem that bundles Python-generic intelligence into a single `PluginRegistry.register` call. It lives at `plugins/python/` inside the Syrus repository and applies to any Python project (Flask, FastAPI, plain WSGI, scripts) — framework-specific tooling (e.g. Django) belongs in its own plugin.

syrus_rails

language

`syrus_rails` is a Syrus plugin gem that bundles Rails-*framework*-specific capabilities into a single `PluginRegistry.register` call (registered manifest name `syrus-rails`). It lives at `plugins/rails/` inside the Syrus repository and is the primary integration point for Ruby on Rails repositories. Ruby-generic capabilities that aren't specific to Rails — RSpec grader failure detail, RSpec output parsing, SimpleCov coverage analysis, and Gemfile prepare detection — live in the separate `ruby` plugin (`plugins/ruby/`) instead, so non-Rails Ruby projects (gems, Sinatra apps, plain scripts) can use them too. `syrus_rails` declares `depends_on: [ "ruby" ]`: enabling `syrus_rails` in Admin → Plugins cascades to enable `ruby`, and disabling `ruby` while `syrus_rails` is enabled surfaces a confirm-and-cascade-disable prompt. See `config/syrus_docs/plugins.md` for the general `depends_on` mechanism.

ruby

language

`ruby` is a Syrus plugin gem that bundles Ruby-generic capabilities — not specific to Rails — into a single `PluginRegistry.register` call. It lives at `plugins/ruby/` inside the Syrus repository and applies to any Ruby project: gems, Sinatra apps, plain Ruby scripts, and Rails apps alike.

Spending Insights

observability

Spending Insights adds a sidebar page for understanding agent spend across Syrus. It rolls costs up by epic, repository, user, provider, and workflow trigger so operators can see where automation budget is going. Use it on instances where cost visibility matters. It reads existing accounting data and does not change scheduling, grading, or job behavior.

Syrus Dev

tooling

Syrus Dev contains tooling that is useful when developing Syrus itself: performance diagnostics, operational logs, admin observability pages, and workflow MCP helpers that expose Syrus runtime data to Syrus-development jobs. Keep this plugin disabled on ordinary installations unless operators explicitly want Syrus-internal diagnostics. It is not a general admin plugin; it exists to make Syrus better at building and debugging Syrus.

Tailscale

connectivity

Tailscale registers a Syrus instance as a Tailscale node so operators can reach it over a private tailnet. It manages lifecycle callbacks, status reporting, and the admin page needed to inspect connectivity. Enable it when an installation should be reachable without exposing Syrus directly on the public internet. It is disabled by default because it requires a Tailscale auth key and network policy decisions outside Syrus.

Theming Tools

mcp_tool_set

Theming Tools gives the Syrus Chat agent a `preview_theme` tool: it can draft a candidate color theme and pop it open for the user against the real Style Guide page, so token choices are judged on actual `Button`/`Input`/`Card`/etc. components instead of a recreated mockup. The underlying `Theme` model stays in core (same precedent as `WhiteboardSnapshot` for `whiteboard_tools`) — this plugin only owns the `preview_theme` MCP tool and the broadcast wiring that opens the preview modal.

Whiteboard

mcp_tool_set

Whiteboard adds a shared Excalidraw canvas to chat workspaces and exposes drawing tools to chat agents. Operators and agents can sketch flows, annotate ideas, save snapshots, and revisit visual state as part of a planning session. Use it for design and architecture discussions where text is not enough. The plugin stores whiteboard state per chat and keeps the drawing surface separate from repository code.