Setu सेतु

Your agent, one click from every app.

Setu means bridge. It handles sign-in, token storage and API calls, so your agent can create a GitHub issue or post to Slack without you building any of that.

Open source under Apache-2.0. A hosted version is coming; for now you run it yourself.

Your agent GitHub Slack Notion Linear and more managed sign-in · encrypted tokens · one API

What you no longer build

Sign-in for every app

Your users click Authorize once. You never register an OAuth app or handle a redirect.

Token storage and refresh

Tokens are encrypted at rest, renewed before they expire, and erased when a user disconnects.

Tool definitions and calls

Search the catalog, hand the tools to your model, and run its calls through one endpoint with typed errors.

Three steps in code

Connect a user, find a tool, run it. The same flow works from TypeScript, Python, plain REST, or any MCP client such as Cursor.

  • GitHub
  • Slack
  • Notion
  • Linear
  • Discord
  • HubSpot
  • Asana
  • Airtable
// 1. Send the user to authorize
const conn = await setu.connections.initiate({
  userId: "user_1", toolkit: "github",
});
console.log(conn.connectUrl);
await conn.waitUntilActive();

// 2. Give your model the right tools
const tools = await setu.tools.search(
  "create an issue", { format: "openai" },
);

// 3. Run what it calls
await setu.execute({
  userId: "user_1",
  action: "github.create_issue",
  input: { owner: "acme", repo: "app", title: "Bug" },
});

Open source, and honest about its stage

Run it where you want

One Docker command starts the API and database. Bring your own OAuth apps, keep the keys.

Add an app in one folder

Integrations are short YAML files checked by a linter. Most take under an hour to add.

Pre-1.0

The eight launch integrations haven't been tested against every provider edge case yet. Issues and pull requests are welcome.