Open-source connector platform for enabling, authenticating, and running API connectors from one package.
bun install -g @hasna/connectors@hasna/connectors is a single-product runtime:
- connectors stay inside this repo and package
- projects enable the connectors they want through
.connectors/manifest.json - credentials live in
~/.hasna/connectors/ - CLI, MCP, REST, and the dashboard all use the same connector registry
connectors --helpTypical flow:
connectors install github stripe
connectors auth github
connectors run github --help
connectors run stripe products list --limit 5Key commands:
connectors installwrites project enablement to.connectors/manifest.jsonconnectors listandconnectors searchbrowse the shared catalogconnectors docsreads connector docs from the internal registryconnectors authstores credentials in~/.hasna/connectors/connectors runexecutes connector commands from the one-product runtimeconnectors statusandconnectors doctorverify setup and auth state
CLI output is compact by default so agent terminals do not fill with huge catalogs, README sections, credential status tables, or API records.
connectors listshows a compact page. Use--cursor <n>or--offset <n>for the next page,--limit <n>to change page size,--verbosefor wider rows,--all --verbosefor the full human catalog, or--jsonfor the full machine-readable payload.connectors docs <name>shows a summary. Use--verbosefor full parsed sections,--essentialfor auth/env vars only,--rawfor raw markdown, or--jsonfor structured docs.connectors status,connectors doctor,connectors jobs list,connectors workflows list,connectors whoami, and dry-run install output page or truncate human rows by default. Use--verbose,show/inspect, or--jsonwhen full detail is needed.connectors runpreserves JSON-style command output, but truncates very large human stdout. Useconnectors run --verbose <connector> ...for full stdout.
connectors-mcpMCP tools also use compact defaults. list_connectors, list_jobs,
list_workflows, and list_agents return paged objects with count, total,
and nextCursor; pass cursor to continue, limit to change page size, and
verbose: true for full records. connector_docs and operation discovery
return summaries unless verbose: true or a specific detail path is requested.
connectors-mcp --http # http://127.0.0.1:8808/mcp
MCP_HTTP=1 connectors-mcpHealth: GET http://127.0.0.1:8808/health. MCP is also mounted on connectors-serve at /mcp.
connectors-serveThe local REST API is served by the one-product runtime at
http://localhost:9876. Use @hasna/connectors-sdk with
ConnectorsClient or LocalConnectorsClient for this local
connectors-serve API.
Hosted SaaS products should use HostedConnectorsClient from
@hasna/connectors-sdk. The hosted client talks to a platform
/api/v1 endpoint with bearer API keys and does not require local connector
installs or individual connector packages.
Connector operations may be exposed to OpenAutomations as @hasna/actions
manifests, but Connectors remains the owner of connector discovery,
enablement, consent, and credential health. An automation action should name
the connector operation and pass only scoped inputs plus references to
credentials that Connectors can resolve.
Recommended action shape:
{
"schemaVersion": "1.0",
"id": "connectors.github.issue.create",
"name": "Create GitHub issue",
"version": "1.0.0",
"bindings": [
{
"kind": "sdk",
"package": "@hasna/connectors",
"export": "runConnectorOperation",
"metadata": {
"connector": "github",
"operation": "issues.create"
}
}
],
"secrets": [
{
"name": "github",
"ref": "hasna/xyz/opensource/connectors/prod/github",
"required": true,
"redaction": "full"
}
],
"approval": {
"mode": "manual",
"requiresApproval": true,
"reason": "Creates or mutates data in an external account"
},
"audit": {
"eventSource": "hasna.connectors",
"redactPaths": ["secrets", "input.token", "input.authorization"],
"evidenceRefs": ["connector:github", "operation:issues.create", "credentialScope:repo"]
}
}OpenAutomations owns the durable run/action queue and DLQ. Connectors owns runtime auth checks, connector-specific consent, credential refresh, and provider response normalization. Raw OAuth tokens, API keys, refresh tokens, and session cookies must not be placed in automation specs, action queues, task comments, or run evidence; use secret references and redacted audit metadata.
Project-local enablement is lightweight:
.connectors/
├── manifest.json
└── index.ts
The package no longer copies full connector source trees into each project.
Data is stored in ~/.hasna/connectors/.
Contributor guidance for the one-repo / one-product model lives in docs/one-repo-one-product.md.
Apache-2.0 -- see LICENSE