Skip to content

Custom Sources

Red Station allows you to integrate tasks from external systems.

No-Code Options

If you cannot modify the platform code or write Python plugins, you have two options:

1. Manual Creation (CLI)

You can manually replicate tasks from any system using the CLI.

bash
pilot task create --title "Fix bug in Trello Card #123" --description "Details copied from Trello..."

2. Local Task Files

Bulk define tasks in YAML files within your project. This is perfect for "GitOps" style task management where the source of truth is the repo itself. See Tasks > Local Task Files.


Native Integrations (Requires Code)

To create a live, two-way sync with a new platform (e.g., Azure DevOps, Asana), you need to implement a Custom Connector in Python.

The Connector Interface

All integrations implement the Connector base class.

python
from connectors.base import Connector, ConnectorRegistry

@ConnectorRegistry.register("my_source")
class MySourceConnector(Connector):
    name = "my_source"
    connector_type = "task_source"

    async def connect(self) -> None:
        # Establish API connection
        self.client = MyClient(token=self.config["token"])

    async def import_task(self, ticket_id: str) -> Task:
        # Fetch data and map to Pilot Task model
        data = await self.client.get_issue(ticket_id)
        
        return Task(
            id=ticket_id,
            source="my_source",
            intent=data.title,
            description=data.body
        )

Registering Your Source

  1. Place your connector file in ~/.pilot/connectors/.
  2. Add configuration to ~/.pilot/config.yaml:
yaml
integrations:
  my_source:
    enabled: true
    token: ${MY_SOURCE_TOKEN}

Usage

Once registered, you can use it immediately with the CLI:

bash
pilot task import TICKET-123 --source my_source

Connector Types

TypePurpose
task_sourceImport tasks (Jira, Linear, Asana)
vcsVersion Control (GitHub, GitLab, Bitbucket)
ciCI/CD (Jenkins, CircleCI)
notificationAlerts (Slack, Teams)

Released under the MIT License.