Skip to content

Overview

Triggerware is a virtual database engine that lets you query any data source — APIs, SaaS platforms, databases, files — using standard SQL. Instead of building ETL pipelines to move data into a central warehouse, Triggerware exposes external systems as virtual tables through pluggable connectors. A single query can join data across (thing1), (thing2), (thing3) and more with no data movement required.

Triggerware runs as a Docker container and communicates over JSON-RPC. You interact with it through our client libraries, the CLI, or the raw JSON-RPC API.


  • Cross-source joins with no ETL. Query across your entire tool stack in one SQL statement. No warehouse, no pipelines, no syncing schedules.

  • Reactive by default. Subscribe to multi-system conditions and get notified when they become true. Polled queries re-run on a schedule and report deltas — no webhook plumbing required.

  • Built for AI agents. Triggerware ships as an MCP server (soon), giving LLM agents a single tool call to query across all your connected systems.

  • Connectors for everything. Each connector exposes an external service as virtual tables. Install the ones you need and start querying immediately.


The Triggerware CLI manages your local instance and connector configuration. Install it (somehow):

install it somehow?

For full CLI usage, see the CLI reference.

triggerware start

This starts the Triggerware container in the background. By default it listens on port 5221 for JSON-RPC connections.

Connectors expose external data as virtual tables. Activate a pre-installed one to start querying:

triggerware activate-connector x_posts_by_user api_key=oeu

Once configured, the connector’s tables are immediately available for queries.


Create a Python virtual environment and install the client:

pip install triggerware

Then run your first cross-source query as a python script:

from triggerware import TriggerwareClient
client = await TriggerwareClient()
results = await client.execute_query("""
SELECT c.name, t.subject, t.status
FROM salesforce_contacts c
JOIN zendesk_tickets t ON c.email = t.requester_email
WHERE t.status = 'open'
AND t.age_hours > 48
""")
for row in results:
print(row)

Triggerware ships with a Model Context Protocol server, letting AI agents query all your connected data sources in a single tool call.

Add Triggerware to your MCP client configuration:

{
"mcpServers": {
"triggerware": {
"command": "triggerware",
"args": [
"mcp"
]
}
}
}

Once connected, an agent can issue SQL queries against any of your installed connectors through standard MCP tool use.

Learn more about the MCP server and available tools in the MCP documentation.


For production use, our client libraries handle connection management, authentication, result pagination, and error recovery.

LanguagePackage
Pythontriggerware
Gotriggerware

If you prefer to work at a lower level, the full JSON-RPC API reference documents every method, parameter, and response type.