Docs/Communication

Service Connectors

Edit on GitHub

Available Connectors

ConnectorCapabilitiesAuth
GitHubIssues, PRs, Actions, repos, code searchOAuth2 or personal access token
NotionPages, databases, search, block editingIntegration token
LinearIssues, projects, cycles, labelsAPI key
Google WorkspaceCalendar events, Gmail, Drive filesOAuth2 service account
Microsoft 365Outlook mail, Calendar, OneDriveApp registration (OAuth2)
Home AssistantDevices, scenes, automations, entity statesLong-lived access token
Philips HueLights, scenes, rooms, groupsBridge pairing
ObsidianNotes, search, daily notes, vault browsingLocal REST plugin
SpotifyPlayback control, search, playlists, queueOAuth2
Social MediaTwitter/X, LinkedIn, Reddit, InstagramPlatform-specific OAuth
CustomBuild your own via Connector SDKVaries

All connectors are built with defineConnector() from the @auxiora/connectors SDK. Each connector declares its actions, triggers, entities, and auth requirements. Actions are executed through a unified interface, and each action specifies a minimum trust level and trust domain.

Setup: GitHub

1. Create a Personal Access Token

  1. Go to github.com/settings/tokens and click Generate new token (classic).
  2. Select scopes: repo, workflow, read:org.
  3. Copy the generated token.

Alternatively, use OAuth2 by configuring a GitHub App. The connector supports both auth methods.

2. Store the Token in Vault

auxiora vault add GITHUB_TOKEN
# Paste the token when prompted

3. Configure the Connector

In ~/.auxiora/config.json:

{
  "connectors": {
    "github": {
      "enabled": true
    }
  }
}

4. Verify

Ask your assistant: "List my open pull requests." Auxiora calls the GitHub API through the connector and returns the results.

Available Actions

ActionDescriptionTrust Level
issues-listList issues for a repository1
issues-getGet a specific issue1
issues-createCreate a new issue2
issues-updateUpdate an existing issue2
prs-listList pull requests1
prs-getGet a specific pull request1
prs-createCreate a pull request2
repos-listList your repositories1
repos-getGet repository details1
actions-list-runsList workflow runs1
actions-triggerTrigger a workflow dispatch3
search-codeSearch code across repositories1

Setup: Notion

1. Create a Notion Integration

  1. Go to notion.so/my-integrations and click New integration.
  2. Name it (e.g., "Auxiora"), select your workspace, and click Submit.
  3. Copy the Internal Integration Token.

2. Share Pages with the Integration

In Notion, open each page or database you want Auxiora to access. Click the ... menu in the top right, then Add connections, and select your integration. The integration can only see pages explicitly shared with it.

3. Store the Token in Vault

auxiora vault add NOTION_TOKEN
# Paste the token when prompted

4. Configure the Connector

In ~/.auxiora/config.json:

{
  "connectors": {
    "notion": {
      "enabled": true
    }
  }
}

5. Verify

Ask: "Search my Notion notes about project planning." Auxiora queries the Notion API and returns matching pages.

Available Actions

ActionDescriptionTrust Level
pages-searchSearch pages and databases1
pages-getGet a specific page1
pages-createCreate a new page2
pages-updateUpdate a page2
databases-queryQuery a database with filters1
blocks-get-childrenGet block content for a page1
blocks-appendAppend content blocks to a page2

Setup: Home Assistant

1. Generate a Long-Lived Access Token

  1. Open your Home Assistant dashboard (e.g., http://homeassistant.local:8123).
  2. Click your profile icon in the bottom-left corner.
  3. Scroll to Long-Lived Access Tokens and click Create Token.
  4. Name it "Auxiora" and copy the token.

2. Store the Token in Vault

The token value includes the Home Assistant URL, separated by a pipe character:

auxiora vault add HOMEASSISTANT_TOKEN
# Paste: http://homeassistant.local:8123|YOUR_TOKEN_HERE

If your Home Assistant instance runs on the default http://localhost:8123, you can omit the URL prefix and paste just the token.

3. Configure the Connector

In ~/.auxiora/config.json:

{
  "connectors": {
    "homeassistant": {
      "enabled": true
    }
  }
}

4. Verify

Ask: "What devices are in my living room?" or "Turn off the office lights." Auxiora communicates with the Home Assistant API to list devices and control them.

Available Actions

ActionDescriptionTrust Level
devices-listList all devices1
entities-get-stateGet an entity's current state1
entities-set-stateControl a device (turn on/off, set value)3
scenes-listList available scenes1
scenes-activateActivate a scene3
automations-listList automations1
automations-triggerTrigger an automation3

Connector SDK

Build custom connectors using the @auxiora/connectors SDK. A connector defines its identity, auth requirements, actions, and optionally triggers and entities.

Minimal Example

import { defineConnector } from '@auxiora/connectors';

export const myConnector = defineConnector({
  id: 'my-service',
  name: 'My Service',
  description: 'Integration with My Service API',
  version: '1.0.0',
  category: 'productivity',
  icon: 'wrench',

  auth: {
    type: 'token',
    instructions: 'Generate an API key at https://myservice.com/settings/api',
  },

  actions: [
    {
      id: 'items-list',
      name: 'List Items',
      description: 'List all items in the workspace',
      trustMinimum: 1,
      trustDomain: 'system',
      reversible: false,
      parameters: [],
    },
    {
      id: 'items-create',
      name: 'Create Item',
      description: 'Create a new item',
      trustMinimum: 2,
      trustDomain: 'system',
      reversible: true,
      parameters: [
        { name: 'title', type: 'string', required: true, description: 'Item title' },
        { name: 'body', type: 'string', required: false, description: 'Item body' },
      ],
    },
  ],

  async executeAction(actionId, params, token) {
    switch (actionId) {
      case 'items-list':
        return fetchItems(token);
      case 'items-create':
        return createItem(token, params.title as string, params.body as string);
      default:
        throw new Error(`Unknown action: ${actionId}`);
    }
  },
});

Key Concepts

  • Actions are discrete operations the assistant can perform (list, get, create, update, delete). Each action declares a minimum trust level and a trust domain.
  • Triggers are polling-based events the assistant can subscribe to (e.g., "new issue created"). Define a pollTrigger function that returns new events since the last poll.
  • Entities describe the data objects the connector works with, enabling the assistant to understand the domain model.
  • Auth supports token, oauth2, and credentials types. The SDK validates that auth is configured before executing any action.
  • trustMinimum controls the autonomy level required. Read-only actions typically use level 1; write actions use level 2 or 3; destructive actions use level 3 or 4.
  • reversible tells the assistant whether an action can be undone. This affects how cautiously the assistant approaches execution.

Scaffolding a New Connector

auxiora connect scaffold my-service

This generates a connector package under packages/connector-my-service/ with the standard structure: src/connector.ts, src/index.ts, tests/connector.test.ts, and package.json.

Use Cases

1. Developer Workflow

Connect GitHub and Linear. Ask: "Create a Linear issue for this bug and link the GitHub PR." The assistant creates the issue in Linear with the right labels and project, then posts a comment on the GitHub PR with a link back. Trust level 2 is required for write operations; the assistant asks for confirmation if trust is set to level 1.

2. Smart Home

Connect Home Assistant and Philips Hue. Tell the assistant: "Set the office to focus mode." It dims the Hue lights to 40%, sets a warm color temperature, and activates the "Do Not Disturb" scene in Home Assistant. At night, say "Bedtime" and it turns off all lights and locks the doors.

3. Knowledge Worker

Connect Notion and Google Workspace. Before a meeting, ask: "Prep me for my 2pm meeting -- pull the project notes from Notion and summarize the attendees' recent emails." The assistant queries your Google Calendar for the meeting, looks up attendees, fetches their recent emails from Gmail, finds related pages in Notion, and synthesizes a briefing document.

4. Content Creator

Connect Obsidian and Social Media. Ask: "Draft a Twitter thread from my Obsidian notes on distributed systems." The assistant searches your Obsidian vault for relevant notes, extracts key points, structures them into a thread with appropriate length constraints, and presents the draft for your approval before posting.


See also: Messaging Channels | Behaviors | Getting Started