
# Signed plugins

Acahti has one standard plugin: **Phaevo**. Its source repository is [phaevo](https://github.com/benchyard/phaevo). A plugin repository owns its business code, frontend bundle, documentation and GitHub release workflow.

Tickets, Todos, Docs, Chat and [Argos](testing.md) are built into Acahti. Their APIs, MCP tools, CLI commands, attachments, Board summaries and business permissions ship with the gateway and require no plugin registration or plugin access grant. Chat conversations, messages, files and search are visible only to conversation members. Every signed-in member reads Argos.

## Inventory and navigation

Admin → Plugins lists verified, signed releases and their durable lifecycle state. Every plugin supports the same install, enable, disable, uninstall and access-grant controls. Uninstall retains application data. The header lists plugin tabs after the built-in sections and before Track; authorized plugin metadata arrives with the session so navigation does not wait for plugin frontend code to load. A navigation entry may name a [lucide](https://lucide.dev/icons/) `icon`. The web app draws `activity`, `book-open`, `bot`, `bug`, `calendar`, `chart-line`, `clipboard-list`, `cloud`, `database`, `flask-conical`, `gauge`, `network`, `radar`, `rocket`, `server`, `shield-check`, `terminal` and `test-tube`; any other name, or none, shows the default puzzle icon. A release may declare one UI slot, `sidebar`; the catalog rejects any other.

A plugin appears only when its signed release is trusted, its registration is active and the current account has access. An empty inventory means no verified releases have been provisioned.

## Independent delivery

Plugins use contract v3 with service runtimes. Source pipelines publish immutable OCI images and frontend artifacts. The operator profile in [acahti-plugins](https://github.com/acahti-ai/acahti-plugins) restricts publishers, source repositories, origins, permissions and artifact digests. Publisher keys and installation secrets remain on the deployment host.

Before replacing a service, the source release pipeline reserves its lifecycle operation, closes admission and waits for admitted requests to finish. It deploys the verified artifact, publishes its signed catalog entry, checks the release and resumes admission. Invalid signatures, missing receipts and digest mismatches fail closed. Plugin releases do not require a new gateway release.

User and Team grants are checked against live membership. Gateway-issued assertions are short-lived and bound to their audience, request method, path and body. Browser cookies and shared administrator credentials are never forwarded to plugin services.

## Phaevo permissions

Phaevo mounts `/phaevo` inside the standard Acahti shell, using its login, header, sidebar, locale and theme. Organization administrators manage environments, grants, blocks, devices and sessions and inspect gateways and audit events. Members see their authorized environments and their own sessions and may disconnect their own sessions. Both services enforce authorization.

Management requests use a one-time challenge and a signed 15-second request assertion. Network device assertions use a distinct protocol. Phaevo's public root redirects to its Acahti tab; its control API and CLI distribution remain at the independently deployed service origin.
