GitHub

GitHub

Open source soon
Open source soon

Your community's power

makes your software better.

Gemini
Codex
Claude
FX
Cursor
~/runs/report

report-to-issue✔ triage agent → issue #209 opened

Thinking..

~/runs/issue-209

issue-to-pr sandbox → install → baseline → fix → mergeable

> branch pushed by the engine, never by the agent
> ✔ mergeable · draft PR #210
> titled "no automatic verification"

~/runs/issue-209/evidence

tokens counted · tools used · files touched · no verdict

Thinking..

const next = await fetch("https://api.example.com/next-section");
Black and white grid pattern with black dots at the intersections, forming a repeating checkered design.
From chat to issue_

Your users describe the problem in their own words. An agent rewrites it as a technical issue in your repo. The fix is a second step, and it is your call.

Report
Issue
Fix
Mergeable
PROGRESS SECTION // 02 SUPCOFLOW
PROGRESS SECTION // 02 SUPCOFLOW

Every run is recorded: which files the agent touched, which tools it used, how many tokens it burned, and how it ended. No verdict: the engine does not grade its own work.

~/runs/issue-209
mergeable
  1. run
  2. report-to-issue
  3. report
  4. triage
  5. issue #209
  6. issue-to-pr
  7. sandbox
  8. install
  9. baseline
  10. fix
  11. push
  12. draft PR #210

Triaged, Not Guessed

An agent reads the report and writes the technical issue in your repo

Sandboxed By Default

Your repo cloned into a microVM, destroyed after the run

Evidence On Every Run

Tokens, tools used, files touched, and how the run ended

You Merge, Or You Don't

Fixes land as draft PRs. Nothing reaches main without you

Triaged, Not Guessed

An agent reads the report and writes the technical issue in your repo

Sandboxed By Default

Your repo cloned into a microVM, destroyed after the run

Evidence On Every Run

Tokens, tools used, files touched, and how the run ended

You Merge, Or You Don't

Fixes land as draft PRs. Nothing reaches main without you

const next = await fetch("https://api.example.com/next-section");
Black and white grid pattern with black dots at the intersections, forming a repeating checkered design.

Drop @supcoflow/chat into your product. It asks what happened, what they expected and how to reproduce it, and it does not file until it has all three. Every report lands in your repo as a technical issue, written by an agent. The fix is a second call, and it is yours to make: that is the one that spends your key.

View Code Sample
// The one package you install. Your
// users need no account, no session.

import { IntakeChat } from "@supcoflow/chat";

<IntakeChat
tenantId="tnt_acme"
projectId="prj_acme_storefront"
backendUrl="https://chat.supcoflow.dev"
/>

// It asks what happened, what they
// expected, how to reproduce it.
// Incomplete: not filed.
// What your console posts when your
// team reports on its own. The chat
// comes in through its own backend.

POST /api/issues
{
"title": "Checkout hangs on the last step",
"body": "I press pay and nothing happens…",
"project_id": "prj_acme_storefront"
}

// No owner and no repo: both come from
// your project settings.
// A second call, on purpose: this one
// spends money, and it is refused until
// your own credential is on file.

POST /api/issue-runs
{
"issue_number": 209,
"project_id": "prj_acme_storefront"
}

// You send it after reading the issue
// the first call wrote.
// The one package you install. Your
// users need no account, no session.

import { IntakeChat } from "@supcoflow/chat";

<IntakeChat
tenantId="tnt_acme"
projectId="prj_acme_storefront"
backendUrl="https://chat.supcoflow.dev"
/>

// It asks what happened, what they
// expected, how to reproduce it.
// Incomplete: not filed.
// What your console posts when your
// team reports on its own. The chat
// comes in through its own backend.

POST /api/issues
{
"title": "Checkout hangs on the last step",
"body": "I press pay and nothing happens…",
"project_id": "prj_acme_storefront"
}

// No owner and no repo: both come from
// your project settings.
// A second call, on purpose: this one
// spends money, and it is refused until
// your own credential is on file.

POST /api/issue-runs
{
"issue_number": 209,
"project_id": "prj_acme_storefront"
}

// You send it after reading the issue
// the first call wrote.
const next = await fetch("https://api.example.com/next-section");
Black and white grid pattern with black dots at the intersections, forming a repeating checkered design.
Support as a development engine_

Every report your users leave becomes a technical issue in your repo, without you rewriting it. You decide which ones are worth an agent's time, and those come back mergeable. Your support queue stops piling up and starts filling your backlog.

const next = await fetch("https://api.example.com/next-section");
Black and white grid pattern with black dots at the intersections, forming a repeating checkered design.

The things worth knowing before you point an agent at your repository.

Updated as the engine changes. If something here is out of date, tell us.

Your provider’s bill, for the runs you choose to start. Everything runs on a model key you bring, and nothing starts until you add it: we don’t sell inference. The report and the issue it becomes do not spend your key. The fix is the call that does, and you make it one issue at a time.

No. The chat runs inside your product with no account and no session. It asks what happened, what they expected and how to reproduce it, and it does not file until it has all three. What lands in your repo is the technical issue an agent wrote from that, not the raw transcript.

No. Every run ends at a draft pull request on its own branch. Merging is a decision you make, and nothing reaches main without it.

A clone inside an ephemeral microVM, created for that single run and destroyed after it. The agent only gets an approved set of tools, the model and CLI run at fixed versions, and every file it touched is recorded. Your key is encrypted for your account alone: copied anywhere else, it cannot be decrypted.

You get no pull request, and a record of what the agent read and tried. Nothing grades the agent’s work automatically, so the run tells you what happened, not whether it was right. And if the agent never got to start, the run says it failed instead of pretending it tried.

Each run records its token counts, the tools it used and the files it touched. It does not record a dollar figure: with a subscription credential there is no per-request invoice to derive one from, so we leave the amount blank on purpose instead of guessing from list prices. The dollars are on your provider bill, and the tokens here tell you which run they belong to.

const next = await fetch("https://api.example.com/next-section");
Black and white grid pattern with black dots at the intersections, forming a repeating checkered design.

Ready to stop rewriting tickets?

Connect a repo, report the first problem from your console, and watch it come back as a technical issue, then as a draft pull request.

Every problem a user reports comes back as a technical issue, and then as a draft pull request for you to review. Leave your email and we will set up your first repo with you. Today that is still done by hand.