Skip to main content
§ 00 / AGENTS ↗ TICKETS ↗ GITHUB

Your ticket backlog,
autonomously delivered.

Areli's agents read your conventions, remember your codebase, and ship reviewable pull requests while you do real work. One ticket in, one PR out — every time smarter than the last.

no credit card·SOC2 in progress·cancel anytime
connects:
JirajiraLinearlinearGitHubgh issuesGitLabgitlab
·
github pr
claude · sonnet 4.6
acme/checkout-api
·
PR #1247
open
KAN-1247 · Idempotency keys on POST /refunds
areli/kan-1247-refunds-idempotencymain
agent trace · backend
  • 14:23:01·classified ticket→ backend
  • 14:23:04·loaded conventions from memory4 entries
  • 14:23:09·plan: idempotency key + retry guard + tests
  • 14:23:16·reading refundsService.ts
  • 14:23:31·editing refundsService.ts
  • 14:23:48·editing refundsService.test.ts
  • 14:24:05·pnpm test passed12 / 12
  • 14:24:12·committedfeat(api): idempotency keys
  • 14:24:14·opened PR #1247
  • 14:23:25·ready for review
apps/api/refunds/refundsService.ts +84 −9
async function processRefund(req: RefundRequest) {
- const existing = await ledger.find(req.id);
- if (existing) return existing;
+ const key = req.headers['idempotency-key'];
+ if (!key) throw new HttpError(400, 'missing idempotency-key');
+ const cached = await redis.get(`refund:${key}`);
+ if (cached) return JSON.parse(cached);
const tx = await ledger.reverse(req.txnId);
+ await redis.set(`refund:${key}`, JSON.stringify(tx), 'EX', 86400);
return tx;
}
apps/api/refunds/refundsService.test.ts +38
+ it('returns cached response on retry with same key', async () => {
+ const first = await svc.processRefund({ ... headers: { 'idempotency-key': 'a' } });
+ const second = await svc.processRefund({ ... headers: { 'idempotency-key': 'a' } });
+ expect(second).toEqual(first);
12 / 12 tests pass·+122 −9
live trace · captured 2.3s ago
§ 01 / Method

Four steps from signed-in to shipped PR.

The setup is deliberately small. Areli is opinionated about agent conventions but agnostic about your stack — JIRA, GitHub Issues, Linear, or GitLab Issues, plus a GitHub repo, and the rest is your team's existing process, augmented.

  1. I

    Connect your backlog and GitHub

    Paste an API token for each. We encrypt at rest with envelope-scoped keys, and verify scope on the way in.

  2. II

    Upload your conventions

    Your AGENT.md, lint config, Prettier rules, and any custom skills — drop them in. Every run reads them first.

  3. III

    Pick the agent team

    Backend, frontend, infra, or fullstack. The orchestrator routes each ticket to the right specialist based on labels.

  4. IV

    Review the PRs that land

    Every PR opens as a draft. Areli never merges, never approves itself, never bypasses required checks. You hold the merge button; Areli holds the keyboard. Comment to request changes — a follow-up run lands on the same branch within minutes.

§ 02 / Your workflow, unchanged

No backlog cleanup required.

The backlog you already have — labels, components, workflow, states — is the interface. Areli reads it on the way in and writes status transitions on the way out. Nothing else changes.

  1. Labels and components route work

    Areli's orchestrator reads your existing labels and components to pick the right specialist team. No new label scheme to learn. If a ticket has a `backend` label, the backend specialist takes it.

  2. Status transitions match your workflow

    We map by destination status name, not ID — your custom workflow (`In Progress`, `Started`, `Doing`) all work. Areli writes status transitions on the existing workflow path; we don't replace it.

  3. Custom fields stay yours

    Read-only access to every field Areli doesn't write. Your sprint, your epic link, your story points — preserved verbatim. We touch one column: `Status`. Everything else is yours.

Jira
acme.atlassian.net/KAN-1247
In Review
Idempotency keys on POST /refunds
backendapi-refundsprio:high
SprintQ3 · Sprint 14
EpicPayments · Reliability
Story points3
Reporter@devon.park
Activity
  • A
    Areli agent transitioned toIn Review
    3m ago
  • A
    Areli agent linked pull request #1247
    3m ago
  • A
    Areli agent transitioned from To Do to In Progress
    7m ago
same ticket · same activity · your existing chrome
§ 02 / Agents

Five specialist teams + a QA gate.

The orchestrator reads each ticket and routes it to the right specialist. An architecture pass shapes the structural side before code is written, and QA reviews the diff before the PR opens. You can override per project.

Fullstack team

End-to-end features across stack boundaries

Good fitCRUD with UI, full-loop bugfixes, migrations + the matching form
Bad fitNet-new architecture, anything needing a product call
Avg run
4–8 minutes
Credits
1–4 per ticket
↘ Recently shipped on this team
  1. KAN-321
    Add bulk-export endpoint with rate limiting
  2. KAN-318
    Surface JIRA component on ticket detail page
  3. KAN-302
    Audit-log every billing portal redirect
§ 04 / Failure modes

When the agent gets it wrong.

No agentic tool ships clean every time. The honest question is what the system does when it doesn't. Here are the three cases that matter, each backed by real infra in the dashboard timeline.

The tests fail

The run aborts before any push. The credit hold is released, not charged. The timeline shows you exactly which test broke and the last shell command the agent ran — same telemetry the dashboard uses for a successful run, just with the diff still in the sandbox.

Credit refunded · run state = failed

You request changes on the PR

A reviewer comment fires a webhook. The agent reads every reviewer comment on the PR, decides per-comment whether it agrees, and either pushes a fix to the same branch (PR auto-updates, no new PR) or posts a polite technical reply explaining its reasoning. No new credit per follow-up.

Same branch · same PR · same run lineage

You close the PR without merging

The decision is recorded as a tombstoned memory. Future runs on this project will see the rejection signal and avoid the same approach — the agent learns from the close, not just the merge. Memories carry source_run_id and source_pr_url for provenance.

Negative signal preserved · no silent forget

↳ Every state transition + tool call is in the run timeline · queryable, exportable

§ 03 / Memory

The agent gets better the more it ships.

Every run extracts durable lessons — conventions, codebase facts, decisions, recoveries. They're retrieved on the next run via a hybrid of vector + trigram search, with recency decay and a pinned-curation override.

Run 1

Day 1

First ticket. Areli only knows what your AGENT.md tells it.

  1. Conventionpinned
    Use Zod for any inbound request validation
    Mar 04
  2. ↳ Memory accumulates with every run

Run 47

Day 67

Two months in. The memory store knows your repo's grain.

  1. Conventionpinned
    Use Zod for any inbound request validation
    Mar 04
  2. Codebase fact
    Prisma client is exported from src/lib/db, NOT @/db
    Mar 08
  3. Decision
    JIRA → ticket sync is manual until webhook secret is wired
    Mar 11
  4. Lesson
    Worker must re-SELECT runs after the optimistic claim
    Mar 18
  5. Convention
    Tailwind v4 — define theme tokens in @theme block of globals.css
    Apr 02
  6. Codebase fact
    Auth.js callback signIn() can return a URL to redirect on refusal
    Apr 14
  7. Lessonpinned
    Don't include the PAT in subprocess argv — use git config http.extraheader
    May 03
  8. Decision
    Free plan limited to one GitHub identity per account (anti-abuse)
    May 28

↳ Memories are per-project, encrypted, and exportable

§ 05 / Review cycle

From PR to merged in one review cycle.

The hidden cost of agentic PRs is normally the back-and-forth on review. Reviewer comments fire a webhook; Areli responds on the same branch within minutes — no new PR, no re-context, reviewer never leaves flow.

  1. Step 1

    PR opens draft

    Areli ships the diff + a written rationale. Marked draft until you mark ready.

  2. Step 2

    Reviewer leaves a comment

    Inline or top-level. Areli reads every reviewer comment on the PR.

  3. Step 3

    Areli pushes a fix or replies

    Per-comment decision. Valid → commit lands on the same branch. Pushback → polite reasoned reply.

  4. Step 4

    Reviewer approves

    Same PR, no re-routing, no re-context. Required checks re-run on the new commit automatically.

  5. Step 5

    Merged

    You hold the button. The PR carries lineage back through every Areli pass + every human review.

↳ Reviewer follow-up runs are included on Team and Enterprise plans

§ 06 / The math

How much would Areli save your team?

Slide the three inputs. We snap the cost to a real plan + top-up mix so you can show your CFO a concrete monthly delta.

Inputs
↘ Assumes 4 engineer-hours per ticket on average, 10% human review overhead on Areli-shipped PRs (your team still reads the diff), and 2080 work hours per year. Adjust the loaded cost slider if your number is different.
Monthly result
$19.7k
net engineer-cost savings per month after the Areli bill
PRs auto-shipped
64
Engineer-hours freed
230 hrs
Loaded eng-time saved
$19.9k
Areli plan that fits
Pro
Plan cost / mo
$59
Top-up packs / mo
$159
Pays for itself in 0 days
§ 04 / Pricing

Honest pricing. No usage surprises.

Credits are pre-purchased — runs never overdraft. Top-ups never expire. Plans cancel from a Stripe-managed billing portal; we never hold you hostage on the way out.

Free
$0to try

Enough to ship a few real pull requests and decide.

  • 3 credits, no card required
  • 1 seat
  • All four agent teams unlocked
  • Community support
Most chosen
Pro
$59per month

20 PRs a month for less than two hours of contractor time. For the developer shipping every week.

  • 20 credits each month
  • Memory across runs
  • Top-up packs unlocked
  • Email support
Team
$249per month

90 PRs a month for the price of one engineer-day. Three seats, shared memory, priority queue.

  • 90 credits each month
  • 3 seats included
  • Reviewer-comment follow-up runs
  • Priority queue and SLA
  • Shared project memory & skills
↘ BYOM · included

Bring your own Claude key, get 3× the runs.

Every project connects to your Anthropic account, so model spend is billed by Anthropic — not us. Areli only meters its own runtime (Modal sandbox, Postgres, git ops), which means each run costs 1 credit instead of ~3. Same $59 Pro plan → ~20 shipped PRs a month instead of ~7.

↘ Top-up packs · top-ups never expire
$35
10 credits · Sprint top-up
Never expires
$159
50 credits · Most chosen
Never expires
$550
200 credits · Quarter saver
Never expires
§ 05 / Trust

Built for buyers who read the security questionnaire before signing.

  • SOC2 Type II
    Audit underway · Q3 2026
  • GitHub PAT scopes
    Fine-grained, repo-allowlisted; Contents + PRs only
  • Sandboxed runs
    One ephemeral container per ticket
  • No secrets stored
    PATs encrypted; decrypted only inside the sandbox
  • Tenant isolation
    Org-scoped Prisma proxy + tested
§ 06 / Questions

Frequently asked, candidly answered.

Who owns the code Areli writes?

You do. Areli writes commits on your behalf and pushes them to your repo on your branch. We assert no copyright, no usage rights, no telemetry on the diffs. The code Areli produces is yours from the moment it's pushed.

Which stacks are supported?

JavaScript / TypeScript (Node, Next.js, React, Vue, Svelte), Python (FastAPI, Django, Flask), and Go. Monorepos with pnpm, yarn, or npm work out of the box. On a different stack? Reach out — we'll tell you honestly whether it'll work today.

What's your refund policy?

Credits are refundable within 30 days of purchase if you haven't burned them. Subscription plans cancel from the Stripe billing portal at any time — you keep what you've already used. We'll never trap you on the way out.

How long do you retain ticket text and code?

Ticket text is encrypted at rest and retained while the run is live. Cloned source is held only inside the per-run sandbox and destroyed when the run ends. Memory entries (lessons + conventions) are kept per project until you delete them.

Can one Areli account own multiple repos?

Yes — projects are per-repo, and one organization can own many. Permissions are per-project on the Team plan. Enterprise plans add SAML, SCIM, and audit-log export.

What can the agent actually run inside the sandbox?

Seven tools: read_file, write_file, edit_file, list_dir, search, run_shell, and finish. run_shell has a 60-second timeout, an 8 KB output cap, and a blocklist for rm -rf /, mkfs, shutdown, and similar. Every path is validated against `..` and symlink escape before any I/O. Hard caps per run: 25 iterations, 40 tool calls, 15-minute wall clock, 8 K output tokens per turn — enforced by the harness, not the model.

How is Areli different from Cursor or Copilot?

Those help your engineers write code. Areli ships the boring 70% of tickets without needing an engineer at all — it reads the ticket, writes the change, opens the PR, responds to review comments. Your team reviews and merges, then spends their time on the interesting 30%.
Finale

Ship the boring seventy percent.
Keep the interesting part for your team.