# Plugins

A plugin adds a feature to Siftware Dev without changing the app itself: a view, a screen, an API, its
own tables. Each install chooses which plugins run. A plugin that is not switched on adds nothing:
no routes, no menu items, no panels.

## What you can do

- Use a plugin's feature once the install has it switched on: a project view, a sidebar item, a
  panel on a record page, or an API.
- Give a token a plugin's abilities in Settings > You > Connections > API tokens, where the plugin adds them to the
  Abilities list.
- Give a role a plugin's permissions in Ops & admin > Access > Roles, where the plugin adds its own group.

## Plugins that ship

| Plugin | What it adds | Where it shows |
|---|---|---|
| [Gantt](/docs/manual/plugins/gantt.md) | A Timeline view of a project's tasks | Project tasks page, beside Rows, Cards and Canvas |
| [Leads](/docs/manual/plugins/leads.md) | A lead pipeline that turns won work into projects | Leads in the sidebar, a Leads panel on company pages |
| Capture | Voice capture for the iPhone app: the server transcribes a recording, lists the action items and files them as tasks | API only, abilities `capture:read` and `capture:write`. See [iPhone capture](/docs/manual/capture/iphone-capture.md) |
| Hello | A sample for plugin authors: one project view | Not for everyday use |

Capture details:

- One parent task per recording goes into My Stuff, or a chosen project, with the transcript and the
  recording, and one subtask per action item.
- Each subtask quotes the words it came from. An item whose words are not in the transcript is dropped.
- A recording with no speech makes no task.
- The model runs on the person's own Anthropic key (Settings > You > My AI) or on the server's local model,
  in the order the server sets.
- A glossary of names and terms helps the transcription. It is set through the API.

## How to

1. The server operator switches plugins on for the install. There is no Settings screen for plugins.
2. Once on, a plugin's permissions are granted to the built-in roles it names. Change them per role in
   Ops & admin > Access > Roles.

## Limits

- Plugins are switched on for the whole install, not per team or per person.
- Plugins are installed and updated by the operator, and need a rebuild of the app.
- A plugin's pages live under `/plugins/<name>` and its API under `/api/v1/plugins/<name>`.
- A plugin never widens what a person or token may do in the rest of the app.

## Related

- [Gantt](/docs/manual/plugins/gantt.md)
- [Leads](/docs/manual/plugins/leads.md)
- [Roles and permissions](/docs/manual/settings/roles-and-permissions.md)
