Google Workspace accounts — SSO source for Google signupsAction0
Email
Password
Activated
Expires
Time Left
Created
Linked
No GSuite accounts — use “Import”
0 of 0
Action0
Email
Password
Status
Created
Linked
No Outlook accounts — use "Generate"
0 of 0
iCloud addresses — Hide-My-Email & custom domain
Scheduler off
Action0
HME Address
Label
Forward To
Source
Status
Created
Linked
No addresses yet — use “Fetch from iCloud” or “Generate”
0 of 0
Action0
Name / Label
Provider
API Key
Status
Balance
Numbers
Created
No SMS providers — click “Add”
0 of 0
Action0
Name / Label
Provider
API Key
Status
Balance
Platforms
Emails
Created
No email providers — click “Add”
0 of 0
Action0
Domain
Account
Status
Pool
Addresses
Config
Added
No domain yet — add a Cloudflare account, then press “Add domain”
0 of 0
–
Run
Action0
Email
Password
PAT
2FA
Status
Created
Linked
Routed
No GitHub accounts
0 of 0
Run
Action0
Email
Status
Credits
Created
Routed
No CodeBuddy accounts
0 of 0
CodeBuddy CN (SMS OTP) accounts — run from the SMS tab (select a provider → Run → CodeBuddy CN)
Action0
Phone
Provider
Credits
Status
CC
Created
Routed
No CodeBuddy CN accounts
0 of 0
WorkBuddy accounts — the parent code comes from Configuration (Run → WorkBuddy)
Action0
Email
Status
Credits
Created
Routed
No WorkBuddy accounts
0 of 0
Run
Action0
Address
Password
Status
Score
2FA
Created
Linked
Routed
No Proton accounts yet — run them from the HME tab
0 of 0
Run
Action0
Address
Password
Domain
Status
Recovery
Review
Created
No Tuta accounts yet — press Generate
0 of 0
One parent (address + code) → child mailboxes on hushmail.com
Action0
No Hushmail children yet — press Generate
0 of 0
One iCloud forward inbox → up to 10 AliasMail aliases per parent
Action0
Alias
Status
Aliases
Created
No AliasMail parents — press Add Parent
0 of 0
Persona inventory · browser research before signup automation
Action0
Mailbox name
Password
Status
Created
No mail.com personas — use Generate, then research the signup in Playground
0 of 0
Your own Jio numbers — activation state, expiry and cost. Nothing here touches a browser.
Action0
Number
Label
Status
Activated
Expires
Cost
Notes
No Jio numbers — click “Add”
0 of 0
Qoder accounts — create from GSuite / HME / GitHub (select rows → Run → Qoder target)
Action0
Email
PAT Token
Plan
Credits
Status
Created
Routed
No Qoder accounts
0 of 0
Clawbrowser accounts created by the bot — each row carries the API key minted at signup. Add keys to the pool when you want the fleet to start spending them.
Action0
Email
API Key
Traffic
State
Status
Created
Routed
No Clawbrowser accounts
0 of 0
Automation PlaygroundReading sessions…
No frames yet — start a session, and they appear here while it is being watched.
Not recording — clicks and keys still go to the page; nothing is written to the action list.
New session
A session spends a Clawbrowser key and the proxy's traffic; it closes by itself when nobody watches it.
Recorded actions
#
Kind
Selector
Evidence
Shot
No actions recorded yet — click the frame; arm REC when the clicks should be written down.
A row appears only after the page answered, with the selector ladder it reported.
The shot is the element's neighbourhood, not the page.
Sessions
#
Label
Engine
Country
State
Started
Reading sessions…
Overview
Products
Tools
Rent
Content
Events
Orders 0
Customers 0
Stores
Payments
Settings
ConToolsLoading store status…
Reading the shop…
Revenue and orders
Today
Reading the shop…
What sold
Reading the shop…
Shop
Loading…
ProductsA family per account table, and a priced variant per SKU.
Product
Table / gate
Price
In stock
Sold
Enabled
Actions
Loading…
0 of 0
ToolsA product that performs an action for the buyer — a star, a follower, a fork — instead of handing over an account.
Tool
Runs with
Action
Enabled
Actions
Loading…
0 of 0
Email RentMailboxes a buyer can rent. One Telegram ID per rental, one resend, 20 minutes.
Provider
Source
Price
Duration
Resends
Enabled
Actions
Loading…
0 of 0
ContentWhat the bot says, written as Markdown.
Start
Buy
Guide
Support
Product guides
Emoji
Notifications
Start menu
Shown under the greeting on /start
Above the menu buttons. Empty falls back to the shipped quick guide.
Buy page
The product list buyers pick from
The line above the product buttons. Empty falls back to the shop name.
Under the product buttons. Put your contact here and it will not be repeated.
Guide menu
The screen that lists each product's guide
Above the per-product guide buttons. Empty falls back to the shipped title.
Support
The Support screen's body
The contact buttons come from the Stores tab, not from this text.
Product guides
Each product's own guide — what it is, how to use it — is written on the product itself: open Products, edit a product, and use the Guide field. The Guide menu's buttons come from your product list, so a new product appears there by itself.
Custom emoji
Your own emoji, by Telegram id
Or paste the id where the picture belongs: write
[6267307920040403912] straight into any message or button label. It renders as
your custom emoji, and only there — no mapping needed. If Telegram Premium ever lapses,
the marker falls back to the plain emoji automatically, so nothing breaks.
The pack's set name. Used only to learn which plain emoji each id stands for,
so a fallback shows 🤖 instead of a number. Optional.
The map above still works for characters you use in many places: a mapped
emoji renders your custom one everywhere it appears. Leave it empty to keep plain emoji.
Stock notifications
What a buyer is told when stock arrives
Telegram HTML (<b>, <i>,
<a href>) is allowed. Leave a box empty to keep the shipped wording.
Variables
{product} product name ·
{count} how many arrived ·
{stock} sellable right now ·
{price} price
{added_line}{stock_line}{price_line}{cta} — the same lines in the buyer's own language
A line whose variable is empty is dropped, so 💎 Price: {price}
disappears rather than printing a label with nothing after it.
EventsA percent off the whole shop or one product, and an optional per-buyer cap, while a window runs.
Event
Window
Discount
Applies to
Limit per buyer
State
Actions
Loading…
0 of 0
OrdersLoading…
Order
Buyer
Product
Amount
Channel
Status
Created
Actions
Loading…
0 of 0
Customers
Telegram user
Username
Orders
Notifications
Last seen
Blocked
Actions
Loading…
0 of 0
StoresThe shop's own identity.
Shop
Used in the bot's messages and across this area.
Shown on the bot's storefront, its Support screen and the join gate — a saved change reaches the bot without a redeploy. Telegram keeps @capncodes until you type another handle; an emptied field hides that contact.
Delivery
A link opens a private page with the credentials and a copy button. It can be revoked and it expires — the file cannot.
Between 1 and 365 days. After that the link stops working and the buyer needs a new one.
Required for links: the bot has no request to read an origin from, so it needs this host written down. https://contools-app.fly.dev is this console's own address — paste that if you are not sure.
Coming here later
Events, templates, scheduler and notifications for the Telegram bot will live in this tab — the store side of the shop, next to its identity.
Payments
Loading payment status…
activeReading the channel…
Payment window
How long a buyer may hold stock before the order closes and the stock returns to the shelf. One setting for every channel — GoPay, ShopeePay, KlikQRIS and manual transfer.
No QRIS yet
Shopee login
B: token
OTP
On partner.shopee.co.id press F12 → Network, filter GetReportList, then copy the X-Merchant-Token request header. It starts with B:. A token does not renew itself — when it expires, paste a fresh one.
Needs the gateway's fraud-SDK telemetry blob to deliver a code. Until that is configured Shopee may refuse before sending one — if the code never arrives, use the token method above.
Merchant QRIS
Upload the store's static QRIS. The browser reads it locally; the gateway verifies its checksum before saving.
No QRIS yet
Not saved
Store
A store is required before activation.
Connection status
Checking ShopeePay…
Token
Not imported
Selected store
None
Channel
Inactive
Disconnect returns the shop to Manual and removes the imported session.
Transaction history
Sign in to read this store's transactions.
Last 7 days, from the gateway.
KlikQRIS
No QRIS yet
Manual QRIS
SettingsThe bot's own credentials and switch.
Telegram bot
With the switch on, every buyer action calls Telegram getChatMember: someone who has not joined only sees Join channel and Check membership. Add this bot as an administrator of that channel so it can verify other users. A switch-off channel is configured but not enforced.
When both switches are on, buyers must join BOTH channel and group. Make the bot an administrator in both before enabling. Private groups need a numeric chat ID and invite URL.
Use a direct PNG/JPG image link, ideally 640 × 360. Telegram loads the image above the join message. Empty = text only. If the image cannot load, the join buttons still work.
Buyer menu
Which optional destinations the buyer's menu carries. A hidden one leaves the inline menu, the bottom keyboard and the / strip together, so the shop cannot contradict itself. Tick to show, untick to hide.
My preorders reads the buyer's own queue and is hidden while no preorder has been sold. The rest are placeholders with no backend yet.
Monitoring
Log
Report
Network
Automation Log
Ready.
URL Log
Rate = ok / (ok + bad). green ok · red bad · yellow in-flight/other · — no rows with that status
IP Leak Report
Ban Correlation
Time
Email
Method
Host
Path
Status
Type
ms
Flags
Outcome
No captured requests yet
0 of 0
GitHub Configuration
What runs after the account exists
Uncheck a task to skip it — uncheck all three and the run is a bare signup.
The switches apply to the next run; nothing already running is affected.
post-signup work · 0 of 3 tasks
A run with PAT off finishes with no token stored, so nothing that needs
one (CodeBuddy attach, the API) can use the account afterwards. 2FA off
leaves the account on password-only, which GitHub flags far more often.
Rented inbox
On: a rented Gmail GitHub already knows is rotated once
(john@ → j.ohn@) and the run continues — Gmail
delivers the code to the same inbox. Off: the run stops and asks for a fresh
inbox, keeping one account per rental.
After a refusal, the row is parked before its next launch. The retry uses a
fresh profile and a new exit; other connections keep running meanwhile.
Tuta Configuration
The approval mail Tuta asks for when a new account is under review
Why this person needs a mailbox: business,
job search, HR, freelance, or a small association. Each has its own German and
English wording — one template repeated over a batch is the same tell as one
handle shape repeated over a batch.
When a new account lands behind the review
modal, press Email us to fast-track, replace Tuta's template with the generated
request, and send it. Unchecked leaves the draft in place for a human.
Proton Configuration
What runs after the account exists
Growth & 2FA
Signup
Recovery Contacts
Uncheck a section to skip it — uncheck both and the run is a bare signup. Disabled tasks inside the recovery wizard are advanced with Later where Proton requires it; the final badge reports the actual result.
recovery wizard · 0 of 8 tasks · feeds the 10-point score below
Password reset options
Data recovery options
Advanced recovery options
Not scored
Always on, no task needed (Proton enables these on every new account):
Device data backup (once a reset option is verified),
Signed-in reset, QR code sign-in — so a bare signup reads
3/10 and a verified address takes it to 5/10.
runs first, right after signup · 0 of 2 tasks · not part of the 10-point score
Signup and captcha always run in the browser. Under Hybrid and
Full HTTPS everything after them is headless: 2FA (secret mint →
password gate → activation), then the recovery growth ladder (email +
verify, phrase, file) — over HTTPS with no browser fallback; a refused
step is reported, not retried on the page. Only Full web drives the
toggles and the wizard through the browser. Hybrid is the default.
Applies to Proton Generate — every address this run mints carries the
chosen domain. Random keeps the split even by construction: the
under-represented domain is picked from the last 40 accounts, so neither side
drifts ahead. Existing accounts are not renamed.
Only @proton.me and @protonmail.com are accepted. One contact is selected randomly for each signup whose Add random trusted contact task is enabled.
Manage Proton Accounts
0 account(s) selected
Actions
Proxy
Activity
Queue & Running
Check Account Status
Asks Proton about every selected mailbox from its own sticky session and writes the verdict to
proton_accounts.status — that column is otherwise the signup verdict, written once and never revisited, so a
mailbox that died afterwards used to keep reading success until a later run failed reading a code out of it.
Two doors, in this order: Proton's credential-free availability check (no session, no password) says whether the name still
has a mailbox behind it — a name Proton calls free is written as missing; then the login itself, where suspended
(10003) is the one verdict only a credential exchange can reach, and a mailbox that answers normally is re-affirmed as
success. A probe that reached no answer is reported as unverified and its row is left alone: a network blip must not
rewrite the table, and rate-limited names the exit (Proton throttles per IP), not the mailbox.
Sync Account Sessions
Re-authorises each selected mailbox from its own sticky session and stores the fresh pair the code readers live on
(session_uid + session_refresh_token). This is the bulk form of a row-level session refresh — the Proton
half of the GitHub manager's Sync Profiles — for when re-entering 600 mailboxes one by one is not an option. A stored
session Proton refuses is rebuilt from the password rather than reported as a failure: the mailbox is fine, the token was
old. It does not write status — "can this mailbox be re-entered?" is a different question from "is this
mailbox healthy?", and that one is Check Status's answer.
Egress proxy for Proton logins
A status check is an SRP login per mailbox, and Proton rate-limits per IP — a fleet of logins from one address is the
anti-abuse signal that suspends accounts, which is the very thing this check exists to find. So every credential-carrying call
leaves on a sticky session per account, named after that mailbox: no two mailboxes share an exit, and the gateway's
session list reads as the accounts themselves. A login hopping between unrelated IPs is what Proton reads as a stolen credential.
A session that carries nothing is retried on a fresh session of the same account (ada.1) — never another
account's, never a shared one.
Every login leaves through the
global proxy pool (Configuration → Proxies → Proxy Pool), one sticky session per
account. There is no per-flow proxy field any more — the pool decides the upstream, and a
scope tagged pt or any is what serves this flow.
Empty = the stored proxy country. Picked countries lock every bulk
run's account sticky sessions to this pool, round-robin — the same rule the signup wizard
uses. Applies to Check Status, Sync Sessions and the other bulk actions.
Connection test
Dials the exact session a check will use and reports the egress IP, its country / ISP, whether Proton answered, and the session name it landed on.
Not tested yet — click Test proxy.
Idle
Run Check Status from the Actions tab to see per-account progress here.
Held by a worker right now, with the session and egress IP each one is using.
Waiting 0
Not handed to a worker yet. A run keeps at most 8 in flight.
Proton Recovery Detail
Tuta account
Generate iCloud Addresses
Custom-domain addresses need Allow All Incoming Messages: ON on the domain — mail to any name is forwarded to the account's main address, exactly like HME.
Credits & Usage
Loading...
Live view
Request Detail
Proxy Pool
Countries stamped on the ticked rows when you Dispatch Selected — same catalog and defaults as the Run modal.
2 selected
Import GSuite Accounts
Default: now / +24h. Applies to all imported accounts.
Shop stock state
Marking for Shop never changes a sold row — that is what keeps a bulk mark
over a mixed selection from silently re-listing something already sold.
Delivered text
This is what the buyer was sent. Resend sends the same text again and takes no second account.
GoPay login
The code goes to the merchant's own phone
GoPay texts it by SMS/WA.
Enter the code
The QRIS and the session are both in place.
Test gateway
One real bill: pay it with any QRIS app and the shop sees it.
The amount is the QR's own price, in rupiah, and it is the number the shop matches the payment against — so pay it exactly, without rounding.
Add product
The family a buyer recognises. Price lives on its variants.
What it is
Button preview:Product
The slug follows the name until you type one of your own. The icon is what a buyer sees on this family's button — leave it empty for none.
Where its stock comes from
Stock is measured over this table's Shop rows; nothing here creates any. A tool ignores those rows and performs its action with this table's accounts.
Add variant
One priced SKU inside a family.
What it is
The slug follows the label until you type one of your own.
Ditampilkan di halaman produk Telegram sebelum pembeli memilih varian. Jangan masukkan kredensial, link pembayaran, atau klaim yang belum bisa dipenuhi.
Price
= Rp0
= no sale
Wholesale (per unit)
A cheaper unit price from a quantity up. The buyer is charged the cheapest tier their quantity reaches; an event's percent still applies on top. Leave empty for no wholesale.
Which stock rows qualify
The rows you assign with Mark Variantare this variant's stock, whatever their live credits say. Use it for a fixed SKU where an old account at 100 credits still belongs. The window below is then not used at all.
Age is the account's own creation date (GitHub's, not the day we added the row). A row with no creation date on file never matches an age window — it stays in stock rather than selling at the wrong price.
The derived variables work here too: refresh_token keeps rows whose stored token has no refresh token out of stock.
What the buyer receives
Blank prints the source table's own fields, in its own order. A derived variable prints something the column only implies: email_local is the address without its domain, refresh_token is the token inside the stored access_token JSON.
Add event
A percent off while the window runs, and an optional cap per buyer.
Applies to
Pick nothing and the percent comes off every product in the shop.
A cap of zero means the event is a pure discount. The limit counts live orders, so cancelled and expired ones free a seat.
Mark from list
Generate & Run — disposable email
1Provider
2Domains
3Proxy Pool
Loading…
One GitHub account per address.
Tick any — the addresses are spread across the ones you pick.
Loading…
Queue target
none selected
Delivery
One row = one country — the run modal's pool spreads over the rows of a batch, so only its first slot can ever reach a single-row action like this one. Pick the exit for this row, and where a successful run should be delivered: Not routed leaves it on the table, AI Gateway attaches it, Shop marks it for sale.
Rent provider
A mailbox a buyer can rent. One Telegram ID per rental, one resend, a 20-minute window.
Worker machines —
Every machine that can run a queue: state, capacity and free space. Click a row for its detail.
Loading the fleet…
Worker machine —
Spec, live vitals, last cleanup and the fleet it belongs to
1–10. Applies to every flow, including GitHub signup.
Browser Engine
Which engine carries a run. The choice is exclusive: Clawbrowser rides the
managed proxy and is never handed your custom proxy; Camoufox and
Nextbrowser ride your custom proxy and never read or spend a pool key.
Nothing selected keeps the automatic order — a working custom proxy, else the
key pool.
Nextbrowser Account Token
Used by the Nextbrowser (NB) engine only. It is a paired NextBrowser account token
(nb_live_…), not a Clawbrowser API key, and it is stored encrypted. A run on
NB is skipped without it — this engine never borrows a pool key.
Pair a NextBrowser account
Opens NextBrowser's own sign-in, then stores the key it returns. Nothing is
written until the pairing completes, so an abandoned sign-in leaves the
stored token untouched. The link expires after about 14 minutes.
Open the link below and sign in. Keep this page open — it polls until the
account is paired.
Live Browser View
Show a running browser in the Running tab's Live column, watched in place.
Every engine captures its own browser — a CDP screencast where the engine speaks
CDP, a framebuffer grab of the run's own display where it does not — and the
machine running it sends the frames to this console. Nothing is exposed to the
network, and it costs CPU only on the machine that claimed the run, and only
while somebody is actually watching.
Which engines it covers. All ticked is the default and the widest
setting; unticking an engine means its runs get no live view at all.
Proxy Exit Ranking
How the pool chooses between the exits it just measured. On keeps the
shipped behaviour: the fastest exit wins. Off puts freshness
first — an address another run just left through can never outrank a fresh
one, and latency only breaks ties between exits that are equally fresh.
Latency is stable, so "fastest" tends to be the same address every run
in a window — and five labels can all resolve to one IP, which the pool logs as
"best-of-N is ranking measurement noise here, not exits". Both are ways the same
exit gets handed out repeatedly. Turn this off when accounts are being
refused or reviewed, because exit reputation is the thing Tuta acts on.
GitHub Guardrails
Limits for the public actions — star, fork and follow. The 09-17 wave suspended
every account younger than the signup change after 1038 accounts starred one repo in half
an hour, so: an age gate, a per-repo daily cap enforced across runs, and a per-account
sampled/shuffled target list. 0 turns a limit off.
Maintenance / Bersih-bersih
Cleans orphaned processes and stale per-profile leftovers on every machine.
Nothing younger than the grace window is touched, the machine-wide display
:99 is off-limits, and a profile with a live process is never removed —
an auto sweep additionally waits until a machine has no run in flight.
AI Integration
One endpoint and key, and two model slots: the build-flow model answers text (GitHub README prose), the AI Vision model receives the screenshots (Outlook's press-and-hold challenge, growth captchas). An empty vision slot means “the same model as the build flow”.
Not tested yet — Test runs one text completion and one image call.
Proxy PoolN
Proxy API KeysCB
Loading pool health…
No proxy keys configured.
Loading…
Connection
Provider
Host
GB left
Runs
No connections yet.
Registration flows
Select a source
Preview
Select a flow
Shop — Stock Delivery
Coming Soon
Deliver accounts to Telegram bot shop, custom website, or external stock systems. Accounts marked for Shop will be auto-detached from AI Gateway.
9router Instances
Platform & Target Export Settings
Configure default format and template for bulk export (TXT & JSON) per platform.
GitHub
CodeBuddy
CodeBuddy CN
Qoder
WorkBuddy
iCloud Accounts
HME source — cookie + IMAP to fetch Hide-My-Email
Loading iCloud accounts…
Add iCloud Account
Add 9router Instance
Edit iCloud
Edit 9router
Add SMS Provider
Status is set automatically once the API key connection is verified.
Edit SMS Provider
Status is set automatically from the API key connection check.
Add AliasMail Parents
Pick that many random HME/custom-domain addresses with an active iCloud owner
and no AliasMail parent yet. Nothing is queued until you select rows and press Run.
Add JIO Number
Ten digits, starting 6–9. A leading +91 or 0 is stripped for you.
Edit JIO Number
Paste the JIO code
The run is waiting for this. A code Jio rejects leaves the number requested, so you can paste the next one.
Add Email Provider
ERB declares GitHub only, but its order endpoint takes any website. Type a key and the site's domain (e.g. proton → proton.me) to rent inboxes for it and offer it as a target in the Run wizard.
Status is set automatically once the API key connection is verified. A platform list is the supplier's own: it is what a rented email may later be used for.
Edit Email Provider
Status is set automatically from the API key connection check.
Price list
Reading the supplier…
Rent an email
Reading the supplier…
Reading the supplier's price list…
Rent history
Email
Provider
Platform
Domain
Price
Status
Code
Ordered
Expires
No rented inbox yet — press “Order” on a key
0 of 0
Action0
Cloudflare accounts
Name / Label
Email
Cap
Domains
Addresses
Relay
Status
Added
No Cloudflare account yet — press “Account”
0 of 0
Action0
Add Cloudflare account
Both secrets are encrypted at rest. Status is set by a live check — never at insert time.
Edit Cloudflare account
A new credential is checked the moment it is saved.
Add domain
Email Routing is enabled on the zone and the subdomain(s) are added to the pool — Cloudflare writes their MX/SPF/DKIM itself.
Subdomain pool
Label
Subdomain
Status
Used
No subdomain in this zone yet — press “Generate”
0 of 0
Action0
Minted addresses
Address
Subdomain
Platform
Status
Code
Received
Domain
No minted address yet — press “Mint”
0 of 0
Action0
Mint an address
A full pool refuses with the arithmetic (subdomains × cap) rather than overfilling one subdomain.
Run — WorkBuddy re-auth
The invitation's +100 is paid on the account's first query (§248). Ticking this registers and stops
without spending that query, so the attribution can be made later — use it when the account is meant
to be bound to a parent afterwards, or when you want the signup only.
Run — Domains (mint addresses)
Egress comes from the global proxy pool (Configuration → Proxies → Proxy Pool).
Every address gets its own literal Cloudflare rule pointing at the relay Worker, and its own queue row naming that address — so the run claims the one minted for it.
Email Scheduler
RUNNING
Renting spends this key's balance — the key must already be checked (active).
— pick a provider key first —
Automatic rent: cap-sized orders per cycle, then wait the interval.
Run from Source
1Target
2Proxy Pool
3Review
Loading…
Loading live prices…
Select a provider first
The run rents these inboxes and signs up with them: one GitHub account per address.
Each run mints its own address on this account and signs up with it.
2 selected
Unit Price:—
Total Est. Cost:—
Current Balance:—
Insufficient balance! Top up your SMS account.
Unit Price:—
Total Est. Cost:—
Key Balance:—
The supplier may refuse this: the estimate is above the key's balance.
Each address is minted on this account's pool with its own Cloudflare rule
pointing at the relay Worker, so the run claims the address minted for it.
Manage CodeBuddy Accounts
0 account(s) selected
Cron ScheduleCRON ACTIVE
Runs once a day for every valid, non-banned account — one real conversation per account. Next run: calculating…
Egress comes from the global proxy pool
(Configuration → Proxies → Proxy Pool) — one account per run, scope any.
There is no per-schedule proxy field any more.
Run Now
Takes the turn on the WorkBuddy online surface, falling back to the IDE gateway. A run only counts as success when the conversation actually happened.
0
Success
0
Failed
0
Banned
+0
Credits
Idle
Parent AccountNOT SET
Every new CodeBuddy account binds this parent's referral code right after its token is minted. The gateway only accepts a bind within 12 hours of registration, so it happens during signup — the same code applied to an older account is refused. Leave empty to skip.
Empty = new accounts are not bound to anyone.
Live Log
Manage Qoder Accounts
0 account(s) selected
Actions
Proxy
Daily
Activity
Probe Plan & Credits
Exchanges each account's stored PAT for a jobToken and reads its plan, credits and login username back — the bulk form of the row's refresh button, and the same reader underneath, so a row and this modal cannot disagree. A PAT cannot read status directly (Bearer <PAT> → 401), which is why this is an exchange and not a GET. Refreshes plan, credits, credits_total, username and status.
Provision Trial
The mock qodercli activation, for an account that came back without its trial: exchange the PAT with a spoofed Cosy-Machine* identity → read the campaign platform → claim what the legacy activity route still offers → fire one cheap model call → poll for the async 300-credit grant. Not granted is not a failure — the grant is server-side and asynchronous, so a pending account stays success with the reason recorded in error.
One account per worker, all in parallel — raising this does not multiply the run's duration by the account count.
Claim Campaign Rewards
The daily-credit event (qoder.com/events/100credits) is claimed from the desktop growth page, not from a signup: reads the campaign platform with the desktop app's identity and posts one claim per reward the account is entitled to. Rewards land in the add-on block, which is why the credit cell shows them separately from the plan quota. Nothing claimable is not a failure — a day with no reward comes back ok with an empty list, and a repeat claim is replayed server-side. The daily sweep runs the same call, so pressing this and the cron cannot disagree.
Parent Referral Code
Signups started from this install open the parent's invite link first and carry the code through both SSO legs (the plain Qoder SSO and the GitHub SSO), so the new account is bound to the parent that referred it. Paste either the bare code or the whole link — the code is extracted and normalised either way. Leave empty to sign up un-referred; already-created accounts are not re-bound. Binding is free, and an invited friend is worth the same 2-week Pro Trial + 300 credits as any other signup — the parent is paid only after that friend makes a first payment (1,000 credits, landing 14 days after the subscription), and no amount of chat can influence a purchase.
Egress proxy for Qoder API calls
Every probe, exchange, campaign read and model call leaves from this machine's own IP unless a proxy is set here. With a few hundred accounts that is one address driving hundreds of distinct PATs — the shape Qoder's campaign platform reports as deviceOccupiedByOthers, and a plausible reason the trial grant stops arriving across a burst. The session is named after the account itself, so two accounts never share an address however the rotation is set; Session rotation decides whether an account keeps that address or moves to a new one on its next attempt.
Every probe and model call leaves through
the global proxy pool (Configuration → Proxies → Proxy Pool), one sticky session per account.
There is no per-flow proxy field any more — a scope tagged qd or any
serves this flow.
Connection test
Sends one request through the proxy and reports the egress IP, its country / ISP, and whether Qoder's own campaign route answered. A 401 counts as success there: it is the answer that route gives without a token, i.e. proof the request arrived. The test uses a sample session, so it proves the route and not the address a specific attempt will draw.
Not tested yet — click Test proxy.
Daily campaign-claim sweep
Runs Claim Campaign Rewards for every account that holds a PAT, once a day — the campaign window opens 10:00 Singapore time (02:00 UTC), so the default sits 10 minutes inside it. The form is the same one the other cron runners use, and the schedule is stored per provider, so editing this does not move CodeBuddy's.
CRON ACTIVENext run: calculating…
Egress comes from the global proxy pool
(Configuration → Proxies → Proxy Pool), scope qd or any.
There is no per-sweep proxy override any more.
Execution statusIdle
0
Claimed
0
Failed
0
Banned
+0
Add-on
Idle
Run an action from the Actions tab to see per-account progress here.
One free check per account, straight to WorkBuddy's own API — no browser. An account the product has restricted is marked with a ban badge beside its status. The check creates a conversation and costs no model call, so a full sweep is free.
Selected accounts, or every account with a token when nothing is selected.
Restricted rows get a ban badge in the WorkBuddy table.
Egress proxy for WorkBuddy calls
Every check and every daily turn leaves from this machine's own IP unless a proxy is set here.
With a few hundred accounts that is one address driving hundreds of distinct tokens — the shape the
product reports as unusual activity, and the reason an account gets restricted. The session is
named after the account itself, so two accounts never share an address.
Every call leaves through the
global proxy pool (Configuration → Proxies → Proxy Pool), one sticky session per account.
There is no per-flow proxy field — a scope tagged wb or any serves this flow.
Empty = the stored proxy country. Picked countries lock
every account's sticky session to this pool, round-robin — the same rule the Proton tab uses.
Applies to Check Status, the daily turn and the single-row check. Saved as you click.
The model a status check asks for.
Filled from the gateway's own catalogue. Default is what the web client
sends, so leaving it alone behaves exactly as before.
Connection test
Sends one request through the proxy and reports the egress IP, its country / ISP, and whether WorkBuddy's own API answered. A 401 counts as success there: it is what that route answers without a token, i.e. proof the request arrived.
Not tested yet — click Test proxy.
Daily Active sweep
One real conversation per account on the WorkBuddy web app — create → ACP prompt → the page's own agent_task_created report, which is the call the +30 is keyed on. No IDE gateway: a gateway turn is a different activity and is not counted. The reward lands hours later, so each run re-reads every balance and the tab's Credits column is where a grant shows up.
CRON ACTIVENext run: calculating…
Reading the configured proxy…
Execution status · 0 bannedIdle
0/0
Accounts
0
Turned
0
Failed
+0
Credits this run
Idle
Run Check Status to see per-account progress here.
How a WorkBuddy run authenticates. Web drives the browser handshake. HTTPS runs the same chain as pure HTTPS calls — no browser at all — on the run's own egress. Re-auth runs become fully browserless; fresh signups still open a browser for the GitHub identity, then take the WorkBuddy leg over HTTPS.
The whole chain runs as plain HTTPS calls on the run's own
egress — GitHub login, the broker hop and the token mint, no
browser at all.
Real X-Device-Token values only — a restricted capture's token carries that machine's score. Write-only: the stored pool is never shown back, and a blank field keeps it.
Growth activities
Which steps a signup run takes after the account is created. Each is a separate credit-earning action — untick to skip it.
Referral chain
When on, every new WorkBuddy account is bound to a parent code over HTTPS after registration. When off, accounts are created without a parent — the referral chain is paused.
Enable referral chain
Reading…
WorkBuddy Activity
Current bonus, campaign, or event
Loading…
CodeBuddy CN — Daily Checkin Cron
Automated daily checkin (+100) & growth tasks for ALL active accounts
CRON ACTIVENext run: calculating...
Scope: ALL valid non-banned
Egress comes from the
global proxy pool (Configuration → Proxies → Proxy Pool). For GLM the pool
account must exit in Hong Kong — that is a provider-parameter choice
(-cc-HK), not a field here.
Execution StatusIdle
0
Success
0
Failed
0
Banned
+0
Earned
Edit TXT Export Format
Configure fields, separator, and line format template
Available Variables
Click any variable chip to insert at cursor position:
Configure JSON template or leave empty for standard array
Available Variables
Click variable chip to insert at cursor position:
Quick Separators & Symbols
:,"{}[]
Edit Delivery & Routing
Select target destination: specific 9router instance, shop, or all
Attach account to all active 9router instances (one by one), or select a specific instance.
Edit GitHub Credentials
Only the boxes you change are written. Emptying one clears that credential; a box left as it was shown (a masked secret stays masked) is kept as it is. Email is the row's identity and cannot change here.
Add GitHub Account
An address the table already holds is topped up: only the fields you fill in are written, so cookies, profile and created date stay. “Check Status” verifies the account against GitHub, which needs a username or a token to ask with.
Manage GitHub Accounts
0 account(s) selected
Actions
Proxy
Activity
Queue & Running
Check Account Status
Detects active / flagged (shadowbanned) / suspended from the public profile plus each account's PAT, then writes the verdict to github_accounts.status. The PAT call also reports two_factor_authentication — accounts with 2FA on but no stored TOTP secret are flagged (see the 2FA filter on the GitHub tab), because they cannot answer a login prompt. It also refreshes each account's GitHub fields — created_at and the cached profile — from the same two responses, at no extra request.
Sync Account Profiles
One api.github.com/users/{username} per account from that account's own session — the bulk form of the Refresh Account button inside every row, for when clicking 600 of them is not an option. Re-writes profile_data (bio, followers, repos, avatar) and created_at, the age the star/fork guardrails measure. Does not re-test the token: use Check Status for suspended / flagged.
Star Target Repository
One PUT /user/starred per account using its stored PAT. Accepts owner/repo slugs or full repository URLs — one per line, and every account stars every repo from its own session. Max 25 repos per run.
Fork Target Repository
One POST /repos/{owner}/{repo}/forks per account using its stored PAT, landing the fork in the account's own namespace (username/repo). A repo an account already forked comes back as that existing fork, so a re-run is safe rather than a 422. Same list rules as Star: one repo per line, max 25 per run.
Follow Target User
One PUT /user/following per account using its stored PAT. Accepts a plain username or the profile URL.
Create Profile Repository
Creates username/username with an AI-written README and patches the profile bio. Heaviest action — about 5 requests per account.
Random Cross-Follow PoolRunning
Background worker with anti-ban pacing (0.4–1s jitter). Each account follows N random accounts from the pool.
Follows per account
Update Profile Avatar
Queues accounts into the worker pool to sign in via browser and upload a random avatar from the gallery. Accounts that already have a custom avatar are skipped.
Egress proxy for GitHub API calls
Reads use rotating egress (the profile probe is public, and GitHub's 60/hour limit is per IP).
Every call carrying an account's PAT uses a sticky session per account, named after that account, so no two
accounts ever share an IP — and the gateway's session list reads as the accounts themselves. A token hopping
between unrelated IPs is exactly what GitHub reads as a stolen credential.
Status check, star, follow and cross-follow all use that same own session: an account carries the
address it already holds into the next repo, which is the account staying itself rather than a leak.
Sessions are not a scarce resource, so an account whose own session dies gets a fresh one of its own
(sagecode640.1) and the request is retried — never a session belonging to another account, and never
a shared one. It stays on that one for as long as the session it replaced would have lived (the sticky
ttl-…): the gateway rotates that session's exit at the end of the window, so afterwards the account's
own session is a different address and worth another try.
Every PAT call leaves through the global proxy pool
(Configuration → Proxies → Proxy Pool), one sticky session per account — a scope tagged
gh or any serves this flow. There is no per-flow proxy field
any more: the pool decides the upstream and the provider row decides the session shape.
Empty = the gateway default. Picked countries lock every bulk run's
account sticky sessions to this pool, round-robin. Applies to Check Status, Star, Follow,
Cross-follow and the other bulk actions.
Connection test
Sends one request through the proxy and reports the egress IP, its country / ISP, and whether GitHub answered.
Not tested yet — click Test proxy.
Idle
Run an action from the Actions tab to see per-account progress here.
Held by a worker right now, with the session and egress IP each one is using.
Waiting 0
Not handed to a worker yet. A run keeps at most 50 in flight.
2FA Authenticator & OTP
Live TOTP verification code & backup recovery
Current 6-Digit Code
------
Refreshes in --s
2FA Secret Key
None
Backup Recovery Codes (0)View / Copy
Generate Outlook Accounts
Creates the credentials only — nothing is launched. Each
row is a mailbox name with no domain: the domain is reserved at signup
by Microsoft's own form select (outlook.com, hotmail.com, or the
region's own — outlook.sg for an SG run), and the row adopts the address
the form built once a signup succeeds. Tick the rows in the table and press
Run → Outlook Signup to create them at Microsoft; that wizard is
where the country and the delivery are chosen.
Generate mail.com Personas
Creates credentials only; it does not claim a mail.com address or launch a browser. Select one row and use Research, then start its Playground session for CDP mapping. Signup automation follows only after the page's selectors and success verdict are verified.
Generate Tuta Accounts
tuta.com is deliberately
absent: it needs a Pro plan, so a Free signup that picks it is refused.
Egress comes from the global proxy pool.
Each queued row takes one country, round-robin.
The flow ticks Tuta's two attestations for you — "I do not own any other Free
Tuta account and I will not use this account for business" and "I have read and agree
to the terms". Pressing Generate is you making those statements.
Add Hushmail Parent
The code authorises the page on its own — no parent
login, no session. One parent mints many children, and a rotated code is a new parent row.
Generate Hushmail Children
The submit outcome is unmeasured. The form's fields and the button are measured, but
nobody has seen what a successful submit returns — so a run that fills the form and leaves
the page lands as submitted, never as success. The cap is 10 per
press because the parent's rate limit has not been measured either.
Hushmail verdict
Generate Proton Accounts
Each queued row takes one of these, round-robin. The country is the gateway's
exit selector (-cc-XX) — a generated signup has no outside address, so this is the only place its egress is chosen.
Egress comes from the global proxy pool
(Configuration → Proxies → Proxy Pool). A generated signup has no outside address, so
the pool is the only place its exit is chosen — there is no per-run proxy field any more.
Generating…0 / 0
Each account gets a fresh username and password, and its signup is
queued the moment it is minted — the first runs start while the press continues.
These runs carry no outside address, so human verification is
passed by solving the CAPTCHA (slide-to-fit) puzzle; the recovery email is
drawn at random from the iCloud pool — Hide-My-Email and custom domain
addresses alike. Progress is on the Running tab.
Scheduler requires at least 1 active iCloud account to generate HME addresses. Please configure an account first.
Shop activity
How it is running
Reading the shop…
Recent order events
Reading the shop…
How the shop goes live
Paste the BotFather token in the Settings tab, save it, then press Test connection.
List what is for sale from an account tab's Action menu → Manage products… — a family points at that tab's table and sells the rows Shop already routed. The catalogue is not managed from here.
Open the Payments tab to set up a channel, or stay on manual and confirm each payment yourself.
Tick Run the bot. The poller starts on the next deploy.
Payments
gopay and dana are served by one HTTP contract; shopeepay documents its own, so it is refused rather than half-served (§8.2). Each channel has its own sub-tab in Payments — DANA is hidden while its session is retired (§284). The gateway's URL and key are built into this integration, a channel's own switch makes it active, and Manual is the fallback when a QRIS channel cannot take the order.
A merchant session that has died answers exactly like a shop nobody has paid yet, so every verdict here is shown with the moment it was taken. An old green light is the one thing to distrust.
Filters
Orders
Status
Product
Created
Stock notifications
On means this buyer receives an alert for that product. A product they never touched counts as on.
Loading…
Filters
Customers
Blocked
Last seen
Providers
Provider
Host
Session
TTL
No providers yet.
Add provider
Known integrations fill in the documented proxy parameters.
Every connection of this provider dials this host.
Session, region and TTL are the parameter names the
provider documents — one calls its session sid, another
ssd. Leave a name empty if the provider has no such parameter.
Edit connection
This user's WaroengProxy key, used only for this connection's account and usage reads.