Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t.sh

Commit

The Integrations directory no longer lists the 23 remote MCP servers (GitHub, Linear, Asana, Notion, Atlassian, Sentry, Cloudflare, Vercel, Figma, Stripe and the rest) that Customize connected for g1t's own agents: nothing in g1t connects to them, and a person's own harness connects to one directly. Coming-soon cards no longer promise agents to talk to in Slack and Teams, agents that find a meeting time, threads forwarded to an agent from Gmail or Outlook, or agents digging through incidents; the Finds a time tag goes with them, and the integrations guide's list of what is coming names only cards that are still there. Contract comments stop describing removed work as current: agents' review routines on drafts, notification cards for a session at its cap (the approval kind is kept so stored items still read), the platform breaker pausing agent runs (it pauses workflows, checks and the merge queue), docs indexed for agents' recall (for search), and Customize. Checked: the contracts' 48 tests, the site's 903 tests, the TypeScript typecheck and the docs build.

syntaqxcommitted Parentc794168Browse files
8 files+29−830/8 viewed
+2−2
7070 ## Coming soon
7171
7272 Every category has integrations on the way, among them Slack, Microsoft
73−Teams, Notion, Confluence, PagerDuty, Cloudflare, AWS, Figma, Okta and
74−Google Drive for workspaces. For you: **Google Calendar** and **Outlook
73+Teams, Google Docs, PagerDuty, AWS, Miro, Okta and Google Drive for
74+workspaces. For you: **Google Calendar** and **Outlook
7575 Calendar** will set your [status](/guides/chat/#presence-and-status) to *In a meeting* while
7676 you are in one; **Zoom**
7777 and **Google Meet** will set it to *On a call*. A status you set by hand
+3−3
4343 });
4444
4545 test("search finds by name, description, tag and keyword, across every category", () => {
46− const found = arrange(workspace, { category: "design", query: "sentry", connected: none });
46+ const found = arrange(workspace, { category: "design", query: "resolve", connected: none });
4747 assert.deepEqual(found.available.map((view) => view.id), ["sentry"], "a search is not held to the category");
48− assert.deepEqual(found.soon.map((view) => view.id), ["sentry-mcp"], "what is coming sorts after what works");
48+ assert.deepEqual(found.soon.map((view) => view.id), ["pagerduty"], "what is coming sorts after what works");
4949 assert.ok(matchesQuery(personal.find((view) => view.id === "google-calendar")!, "in a meeting"));
5050 assert.ok(matchesQuery(workspace.find((view) => view.id === "anthropic")!, "claude"));
5151 assert.ok(matchesQuery(workspace.find((view) => view.id === "incident-io")!, "incidentio"));
5252 assert.ok(matchesQuery(workspace.find((view) => view.id === "pagerduty")!, "opens ISSUES"));
53− assert.ok(!matchesQuery(workspace.find((view) => view.id === "figma")!, "kubernetes"));
53+ assert.ok(!matchesQuery(workspace.find((view) => view.id === "miro")!, "kubernetes"));
5454 });
5555
5656 test("the navigation counts each category and leaves out empty ones", () => {
+2−1
773773 export type PriceBook = {
774774 prices: Price[];
775775 changes: PriceChange[];
776+ /** Retired with the models g1t no longer runs; still sent. */
776777 modelMarginPercent: number;
777778 /** Every plan, as sold now. */
778779 plans?: FeaturePlan[];
14621463 todayMicros: number;
14631464 /** `PLATFORM_DAILY_SPEND_CAP_MICROS`; 0: no breaker. */
14641465 dailyCapMicros: number;
1465− /** New hosted-model agent runs g1t would pay for are paused. */
1466+ /** New workflows, checks and merge queue runs g1t would pay for are paused. */
14661467 tripped: boolean;
14671468 trippedAt: string | null;
14681469 liftedBy: string | null;
+0−3
4848 .map(([id]) => id.replace(/_/g, "-"));
4949 assert.deepEqual(available("workspace"), ["alerts-webhook", "datadog", "github", "jira", "linear", "sentry", "webhooks", ...models].sort());
5050 assert.deepEqual(available("personal"), ["github", "mcp"]);
51− for (const connector of CONNECTORS) {
52− if (connector.mcp) assert.equal(connector.status, "soon", `${connector.id}: nothing connects to MCP servers yet`);
53− }
5451 });
5552
5653 test("a connector shows its personal side to you", () => {
+9−67
4949 | "Sends events"
5050 | "Alerts into chat"
5151 | "Sets your status"
52− | "Finds a time"
5352 | "AI provider"
5453 | "Deploys"
5554 | "Syncs people";
7271 personal?: { description?: string; status?: ConnectorStatus; capabilities?: ConnectorCapability[] };
7372 /** More words search should find it by. */
7473 keywords?: string[];
75− /**
76− * The remote MCP server behind it, when the tool publishes one, and how
77− * it signs in (`oauth`: the browser; `header`: a key an owner pastes;
78− * `none`). Its connector is soon: see `mcp()` below.
79− */
80− mcp?: {
81− url: string;
82− auth: "oauth" | "header" | "none";
83− /** For `header`: the header the key goes in (Authorization when unset). */
84− header?: string;
85− /** What to know before connecting: where the key comes from, or that signing in needs an app g1t doesn't have yet. */
86− caveat?: string;
87− };
8874 };
8975
9076 /** A connector as one context (a workspace, or you) shows it. */
10086 keywords: string[];
10187 /** The other scope it can also be connected in. */
10288 alsoIn: ConnectorScope | null;
103− /** The MCP server behind it, when there is one. */
104− mcp: Connector["mcp"] | null;
10589 };
10690
10791 /** The categories, in the order the directory lists them. */
139123 provider,
140124 keywords: ["model", "llm", ...keywords],
141125 };
142−}
143−
144−/**
145− * A tool with a remote MCP server. Soon: Customize, where an owner
146− * connected one, was retired with g1t's hosted agents, so nothing in g1t
147− * connects to these servers today. The server is kept for when something
148− * does; until then each person's own harness connects to it directly.
149− */
150−function mcp(
151− id: string,
152− name: string,
153− category: ConnectorCategory,
154− description: string,
155− server: NonNullable<Connector["mcp"]>,
156− capabilities: ConnectorCapability[] = ["Agents can read", "Agents can act"],
157− keywords: string[] = [],
158−): Connector {
159− return { id, name, category, description, scopes: W, status: "soon", capabilities, keywords: ["mcp", ...keywords], mcp: server };
160126 }
161127
162128 /** A planned connector. */
189155 },
190156 keywords: ["git", "import", "sign in"],
191157 },
192− mcp("github-mcp", "GitHub (MCP)", "code", "Agents read and act on repositories, issues and pull requests on GitHub, through GitHub's MCP server.", { url: "https://api.githubcopilot.com/mcp/", auth: "header", header: "Authorization", caveat: "Paste a GitHub personal access token as Bearer <token>: GitHub's server takes one in place of a sign-in." }, ["Agents can read", "Agents can act"], ["issues", "pull requests"]),
193158 {
194159 id: "webhooks",
195160 name: "Webhooks",
231196 },
232197 keywords: ["tracker", "tickets"],
233198 },
234− mcp("linear-mcp", "Linear (MCP)", "issues", "Agents search, create and update issues, projects and cycles in Linear, through Linear's MCP server.", { url: "https://mcp.linear.app/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["tracker", "issues"]),
235199 {
236200 id: "jira",
237201 name: "Jira",
244208 provider: "jira",
245209 keywords: ["atlassian", "tracker", "tickets"],
246210 },
247− mcp("asana", "Asana", "issues", "Agents read, create and update tasks and projects in Asana, through Asana's MCP server.", { url: "https://mcp.asana.com/v2/mcp", auth: "oauth", caveat: "Asana signs in only apps registered with it, and g1t isn't one yet: signing in here fails until it is." }, ["Agents can read", "Agents can act"], ["tasks", "projects"]),
248211 soon("shortcut", "Shortcut", "issues", W, "Stories agents read when work mentions them, updated when the work lands.", ["Agents can read", "Writes back"]),
249212 soon("clickup", "ClickUp", "issues", W, "Tasks agents can read and import, kept in step with their pull requests.", ["Agents can read", "Writes back"]),
250213 soon("trello", "Trello", "issues", W, "Cards become issues, and move along their board as the work does.", ["Opens issues", "Writes back"]),
251214
252215 // Chat & meetings -------------------------------------------------------
253− soon("slack", "Slack", "chat", BOTH, "Alerts and agent updates in the channels your team already reads, and agents to talk to there.", ["Alerts into chat", "Agents can act"], {
216+ soon("slack", "Slack", "chat", BOTH, "Alerts and updates in the channels your team already reads.", ["Alerts into chat"], {
254217 description: "Your status in g1t follows the one you set in Slack, and the other way round.",
255218 capabilities: ["Sets your status"],
256219 }),
257− soon("microsoft-teams", "Microsoft Teams", "chat", BOTH, "Alerts and agent updates posted to Teams channels, with agents to talk to there.", ["Alerts into chat", "Agents can act"], {
220+ soon("microsoft-teams", "Microsoft Teams", "chat", BOTH, "Alerts and updates posted to Teams channels.", ["Alerts into chat"], {
258221 description: "Your status in g1t follows your Teams presence.",
259222 capabilities: ["Sets your status"],
260223 }),
261− soon("discord", "Discord", "chat", W, "Releases, alerts and agent updates posted to a Discord server.", ["Alerts into chat"]),
224+ soon("discord", "Discord", "chat", W, "Releases, alerts and updates posted to a Discord server.", ["Alerts into chat"]),
262225 soon("zoom", "Zoom", "chat", BOTH, "Meeting notes and recordings agents can read when work refers to them.", ["Agents can read"], {
263226 description: "Sets your status to On a call while you are in a Zoom meeting.",
264227 capabilities: ["Sets your status"],
266229 soon("google-meet", "Google Meet", "chat", P, "Sets your status to On a call while you are in a meeting, and starts a call from any channel.", ["Sets your status"]),
267230
268231 // Calendar & email ------------------------------------------------------
269− soon("google-calendar", "Google Calendar", "calendar", P, "Sets your status to In a meeting while you are in one; agents can find a time that suits everyone.", ["Sets your status", "Finds a time"]),
270− soon("outlook-calendar", "Outlook Calendar", "calendar", P, "Sets your status to In a meeting while you are in one; agents can find a time that suits everyone.", ["Sets your status", "Finds a time"]),
271− soon("gmail", "Gmail", "calendar", P, "Forward a thread to an agent, or turn an email into an issue, from your own inbox.", ["Opens issues", "Agents can read"]),
272− soon("outlook-mail", "Outlook Mail", "calendar", P, "Forward a thread to an agent, or turn an email into an issue, from your own inbox.", ["Opens issues", "Agents can read"]),
232+ soon("google-calendar", "Google Calendar", "calendar", P, "Sets your status to In a meeting while you are in one.", ["Sets your status"]),
233+ soon("outlook-calendar", "Outlook Calendar", "calendar", P, "Sets your status to In a meeting while you are in one.", ["Sets your status"]),
234+ soon("gmail", "Gmail", "calendar", P, "Turn an email into an issue, from your own inbox.", ["Opens issues"]),
235+ soon("outlook-mail", "Outlook Mail", "calendar", P, "Turn an email into an issue, from your own inbox.", ["Opens issues"]),
273236
274237 // Docs & knowledge ------------------------------------------------------
275− mcp("notion", "Notion", "docs", "Agents search, read and write Notion pages and databases, through Notion's MCP server.", { url: "https://mcp.notion.com/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["pages", "wiki", "databases"]),
276− mcp("atlassian", "Atlassian (Jira and Confluence)", "docs", "Agents search and update Jira issues and Confluence pages, through Atlassian's MCP server.", { url: "https://mcp.atlassian.com/v1/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["jira", "confluence", "tickets", "wiki"]),
277238 soon("google-docs", "Google Docs", "docs", BOTH, "Agents read the specs and plans linked from issues and chat.", ["Agents can read"], {
278239 description: "Docs you share in chat open for agents as well as people.",
279240 capabilities: ["Agents can read"],
280241 }),
281− mcp("zapier", "Zapier", "data", "Agents run the actions you expose from Zapier, across thousands of apps, through Zapier's MCP server.", { url: "https://mcp.zapier.com/api/mcp/mcp", auth: "header", header: "Authorization", caveat: "Paste the token from your Zapier MCP settings as Bearer <token>." }, ["Agents can act"], ["automation", "apps"]),
282242 soon("coda", "Coda", "docs", W, "Agents read the docs and tables linked from issues and chat.", ["Agents can read"]),
283243
284244 // Monitoring & incidents ------------------------------------------------
318278 provider: "webhook",
319279 keywords: ["incoming", "http", "alerts", "pagerduty", "grafana"],
320280 },
321− mcp("sentry-mcp", "Sentry (MCP)", "monitoring", "Agents search issues, read stack traces and look up errors in Sentry, through Sentry's MCP server.", { url: "https://mcp.sentry.dev/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["errors", "issues"]),
322− soon("pagerduty", "PagerDuty", "monitoring", BOTH, "Incidents open issues an agent can start on, and resolve when the fix lands.", ["Opens issues", "Writes back"], {
281+ soon("pagerduty", "PagerDuty", "monitoring", BOTH, "Incidents open issues, and resolve when the fix lands.", ["Opens issues", "Writes back"], {
323282 description: "Sets your status to On call while you are on call.",
324283 capabilities: ["Sets your status"],
325284 }),
326285 soon("opsgenie", "Opsgenie", "monitoring", W, "Alerts open issues, and close when the fix lands.", ["Opens issues", "Writes back"]),
327− soon("incident-io", "incident.io", "monitoring", W, "Incidents get a channel in g1t, with agents to dig through what changed.", ["Opens issues", "Alerts into chat"]),
286+ soon("incident-io", "incident.io", "monitoring", W, "Incidents get a channel in g1t, with what changed alongside.", ["Opens issues", "Alerts into chat"]),
328287 soon("grafana", "Grafana", "monitoring", W, "Alert rules open issues, and agents read the dashboards they link to.", ["Opens issues", "Agents can read"]),
329288 soon("new-relic", "New Relic", "monitoring", W, "Alerts open issues, with the traces agents need to find the cause.", ["Opens issues", "Agents can read"]),
330289 soon("honeycomb", "Honeycomb", "monitoring", W, "Triggers open issues, and agents query traces while they work.", ["Opens issues", "Agents can read"]),
331290 soon("better-stack", "Better Stack", "monitoring", W, "Uptime incidents and log alerts open issues.", ["Opens issues"]),
332291
333292 // Cloud & deploy --------------------------------------------------------
334− mcp("cloudflare", "Cloudflare", "cloud", "Agents read your Cloudflare account's Workers, storage and settings, and look things up in its docs, through Cloudflare's MCP servers.", { url: "https://bindings.mcp.cloudflare.com/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["workers", "r2", "d1", "dns"]),
335− mcp("cloudflare-docs", "Cloudflare docs", "docs", "Agents search Cloudflare's documentation while they work.", { url: "https://docs.mcp.cloudflare.com/mcp", auth: "none" }, ["Agents can read"], ["documentation"]),
336293 soon("aws", "Amazon Web Services", "cloud", W, "Workflows and deployments reach AWS with short-lived credentials, no stored keys.", ["Deploys"]),
337294 soon("google-cloud", "Google Cloud", "cloud", W, "Workflows and deployments reach Google Cloud with short-lived credentials.", ["Deploys"]),
338295 soon("azure", "Microsoft Azure", "cloud", W, "Workflows and deployments reach Azure with short-lived credentials.", ["Deploys"]),
339− mcp("vercel", "Vercel", "cloud", "Agents read your Vercel projects, deployments and logs, through Vercel's MCP server.", { url: "https://mcp.vercel.com", auth: "oauth" }, ["Agents can read", "Agents can act"], ["deployments", "previews"]),
340296 soon("netlify", "Netlify", "cloud", W, "Deploy previews as checks on pull requests.", ["Deploys", "Agents can read"]),
341297 soon("fly-io", "Fly.io", "cloud", W, "Deploy apps from workflows, and roll back from the deployment's page.", ["Deploys"]),
342298 soon("kubernetes", "Kubernetes", "cloud", W, "Roll out to your own clusters from workflows, with each rollout's status on g1t.", ["Deploys"]),
369325 },
370326 soon("amazon-bedrock", "Amazon Bedrock", "ai", W, "Models in your own AWS account, billed there.", ["AI provider"]),
371327 soon("vertex-ai", "Google Vertex AI", "ai", W, "Models in your own Google Cloud project, billed there.", ["AI provider"]),
372− mcp("hugging-face", "Hugging Face", "ai", "Agents search models, datasets, papers and Spaces on the Hub, through Hugging Face's MCP server.", { url: "https://huggingface.co/mcp", auth: "oauth" }, ["Agents can read"], ["models", "datasets", "hub"]),
373− mcp("context7", "Context7", "docs", "Agents read current documentation for the libraries a codebase uses, through Context7's MCP server.", { url: "https://mcp.context7.com/mcp", auth: "none" }, ["Agents can read"], ["documentation", "libraries"]),
374− mcp("microsoft-learn", "Microsoft Learn", "docs", "Agents search Microsoft's documentation for Azure, .NET and Windows, through Microsoft Learn's MCP server.", { url: "https://learn.microsoft.com/api/mcp", auth: "none" }, ["Agents can read"], ["azure", "dotnet", "documentation"]),
375− mcp("deepwiki", "DeepWiki", "docs", "Agents read generated documentation for public repositories, through DeepWiki's MCP server.", { url: "https://mcp.deepwiki.com/mcp", auth: "none" }, ["Agents can read"], ["repositories", "documentation"]),
376328
377329 // Data & analytics ------------------------------------------------------
378330 soon("postgresql", "PostgreSQL", "data", W, "Agents read your schema, and run read-only queries while they investigate.", ["Agents can read"]),
379331 soon("snowflake", "Snowflake", "data", W, "Agents answer questions from your warehouse with read-only queries.", ["Agents can read"]),
380332 soon("bigquery", "BigQuery", "data", W, "Agents answer questions from your datasets with read-only queries.", ["Agents can read"]),
381− mcp("posthog", "PostHog", "data", "Agents read product analytics, feature flags and errors in PostHog, through PostHog's MCP server.", { url: "https://mcp.posthog.com/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["analytics", "feature flags"]),
382− mcp("supabase", "Supabase", "data", "Agents read your Supabase projects, schemas and logs, and run queries, through Supabase's MCP server.", { url: "https://mcp.supabase.com/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["postgres", "database"]),
383− mcp("neon", "Neon", "data", "Agents read and manage Neon Postgres projects and branches, through Neon's MCP server.", { url: "https://mcp.neon.tech/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["postgres", "database"]),
384333 soon("amplitude", "Amplitude", "data", W, "Agents read the charts that work refers to.", ["Agents can read"]),
385334 soon("segment", "Segment", "data", W, "Agents read your tracking plan, and check new events against it.", ["Agents can read"]),
386335
387336 // CRM & support ---------------------------------------------------------
388337 soon("zendesk", "Zendesk", "crm", W, "Turn a ticket into an issue, and tell the customer when the fix ships.", ["Opens issues", "Writes back"]),
389− mcp("intercom", "Intercom", "crm", "Agents search conversations, contacts and companies in Intercom, through Intercom's MCP server.", { url: "https://mcp.intercom.com/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["support", "conversations", "customers"]),
390− mcp("hubspot", "HubSpot", "crm", "Agents read contacts, companies and deals in HubSpot, through HubSpot's MCP server.", { url: "https://mcp.hubspot.com/anthropic", auth: "oauth", caveat: "HubSpot signs in only apps registered with it, and g1t isn't one yet: signing in here fails until it is." }, ["Agents can read", "Agents can act"], ["crm", "contacts", "deals"]),
391338 soon("salesforce", "Salesforce", "crm", W, "Agents read the account and case behind a request.", ["Agents can read"]),
392− mcp("stripe", "Stripe", "crm", "Agents read customers, payments and subscriptions, and look things up in Stripe's docs, through Stripe's MCP server.", { url: "https://mcp.stripe.com", auth: "oauth" }, ["Agents can read", "Agents can act"], ["payments", "billing", "customers"]),
393− mcp("paypal", "PayPal", "crm", "Agents read and manage orders, invoices and subscriptions, through PayPal's MCP server.", { url: "https://mcp.paypal.com/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["payments", "invoices"]),
394339
395340 // Design ----------------------------------------------------------------
396− mcp("figma", "Figma", "design", "Agents read designs, components and variables from your Figma files, and build to them, through Figma's MCP server.", { url: "https://mcp.figma.com/mcp", auth: "oauth" }, ["Agents can read"], ["design", "frames", "components"]),
397− mcp("canva", "Canva", "design", "Agents search, create and export Canva designs, through Canva's MCP server.", { url: "https://mcp.canva.com/mcp", auth: "oauth" }, ["Agents can read", "Agents can act"], ["design", "slides"]),
398341 soon("miro", "Miro", "design", W, "Agents read the boards linked from issues and chat.", ["Agents can read"]),
399342 soon("storybook", "Storybook", "design", W, "Each pull request's stories as a check, with what changed.", ["Agents can read"]),
400343
446389 provider: connector.provider ?? null,
447390 keywords: connector.keywords ?? [],
448391 alsoIn: connector.scopes.includes(other) ? other : null,
449− mcp: connector.mcp ?? null,
450392 };
451393 }
452394
+1−1
597597 /** One file of a project's docs, for a viewer who can read the repository; not found otherwise. */
598598 repoPage(workspace: string, viewer: User, repo: string, path: string): Promise<Result<DocRepoPage>>;
599599 /**
600− * Indexes the workspace's pages and projects' docs for agents' recall
600+ * Indexes the workspace's pages and projects' docs for search
601601 * again, in batches in the background. Workspace owners. True when a run
602602 * started (false: one is already going).
603603 */
+10−4
1818 * push, a vulnerability report), shown like a mention; the rest of the
1919 * security items are ordinary `inbox` ones.
2020 */
21−export type NotificationKind = "dm" | "mention" | "thread_reply" | "inbox" | "approval" | "security";
21+export type NotificationKind =
22+ | "dm"
23+ | "mention"
24+ | "thread_reply"
25+ | "inbox"
26+ /** Retired with g1t's own agents (a session at its cap); kept so stored items and preferences still read. */
27+ | "approval"
28+ | "security";
2229
2330 export const NOTIFICATION_KINDS: readonly NotificationKind[] = ["dm", "mention", "thread_reply", "inbox", "approval", "security"];
2431
5158 /** The thread it is in, for a reply: quick replies go there. */
5259 thread_root?: string | null;
5360 /**
54− * The chat card it is about, when that card has something to press: a
55− * session at its cap (Approve more, Stop, Open), a draft issue (File
56− * issue, Discard). The toast and the notifications panel show these
61+ * The chat card it is about, when that card has something to press,
62+ * such as a draft issue (File issue, Discard). The toast and the notifications panel show these
5763 * actions, and pressing one goes to the site's `card_action`, exactly as
5864 * on the card itself.
5965 */
+2−2
650650 /** The branch to merge into: the default branch when left out. */
651651 base?: string;
652652 /**
653− * Opened from a branch as a draft, still being worked on: it can't merge,
654− * and agents' review routines wait, until it is marked ready.
653+ * Opened from a branch as a draft, still being worked on: it can't merge
654+ * until it is marked ready.
655655 */
656656 draft?: boolean;
657657 };

Comments

Sign in to comment.