Secocyber Voice Cloner · Admin
Summary Users Plans Coupons Queue Jobs Email AI Enhance Audit ← Client Sign out
Deploy / restart

Checks (this server): live API vs release.py on disk (app + Client/Admin UI semver) + git, and ?v= strings in static/index.html / admin.html. This tab: compares your loaded admin.js URL to that HTML. Still manual: Client site in another tab (hard refresh), CDN caches, other hosts.

—

—

User accounts

Search by email, edit roles and plans, adjust credits, and export activity reports.

How catalog, wallet, and used (jobs) relate

Catalog is the credit tier from Plans for the user’s plan code. Wallet is the live balance (users.credits). On FREE they often differ after coupons, top-ups, or admin grants. Δ = wallet − catalog. Used (jobs) is lifetime net TTS spend per email and survives account deletion.

Bulk delete creates the same closed-account snapshot as self-delete. You cannot delete yourself or the last admin.

0 selected

User

Account

Adjust credits

Reports & data

Maintenance

—
—
# ID Email Role Plan Catalog Used Wallet Status Created Actions
Closed accounts (trash) 0

Snapshots are written when someone confirms deletion or an admin deletes a user. Historical deletes only appear in Audit — use Import from audit log once to backfill. Restore recreates login for that email. Remove drops the snapshot only. Empty trash requires typing EMPTY_TRASH.

RecordFormer UIDEmailDeletedCredits → carryoverJobsActions

Plans

When you change a plan’s Credits (FREE, PACK1, or PACK2), the catalog row and .env update, then every non-admin subscriber on that plan gets:
wallet = max(0, new catalog credits − Used jobs) where Used jobs is lifetime net TTS consumption per email. New signups still use the FREE row for the welcome grant. Reconcile… re-runs the same formula against the current catalog without editing the row (useful if usage counters were fixed).

AI Enhance (per plan): Per day = max uses per UTC day · Credits = charge wallet each time · Both = daily cap and credit cost. Day / Cr inputs apply per mode. Save updates catalog + enhance rules. Lowering limits applies immediately to usage already counted today.

CodeNameCreditsPrice (EUR)AI EnhanceActive

Invoices — seller template (PDF)

EU billing. Currency is EUR (€). Customers choose Private (personal) or Company (business) at checkout. If you are VAT-registered, enable it below and set your domestic VAT % (e.g. 22% Estonia). If you are not VAT-registered, leave it off — invoices show 0% VAT with a “not VAT-registered” note. EU B2B cross-border uses reverse charge (Art. 196) — the buyer selects it and must provide a VAT ID. IBAN should match your Wise Business / SEPA account.

Issued invoices

Resend PDF requires working SMTP (Email tab).

WhenNumberClientBuyer emailTotalVATEmail sent

Create coupon

Coupons

CodeTypeValueUsedLimitValid untilActive

Queue & infrastructure

Live metrics refresh every few seconds while this tab is open.

Jobs (last 200)

IDPublicUser IDAccountStatusProgressCostCreated

Outbound email (SMTP)

Important — 2FA / Google Authenticator

The 6-digit code from Google Authenticator is only for logging into Gmail in the browser. This app never asks for that code. For SMTP you must create a separate App password (16 letters) in your Google Account after 2-Step Verification is on — then paste only that App password in the field below, not your normal Gmail password.

Open: myaccount.google.com/apppasswords → create “Mail” (or Other) → copy the 16-character password → paste here → Save & reload. SMTP user and From email should be the same @gmail.com as the account that created the App password.

Why mail can land in Spam / Promotions

  • Alignment: Keep SMTP user, From email, and (now) Reply-To the same mailbox when using Gmail — mismatched “From” domains without SPF/DKIM often get flagged.
  • Reputation: New senders, rare volume, or links to unfamiliar domains can trigger filters. Recipients can click Not spam once so their provider learns.
  • Custom domain “From” + Gmail SMTP: Gmail may rewrite or deliver poorly. Prefer the same @gmail.com you authenticated with, or use a transactional provider (SES, Postmark, Mailgun) with SPF/DKIM on your domain.
  • Content: Avoid ALL-CAPS subjects, many links, or “spammy” phrases. Job-ready mails now include a plain-text part and Auto-Submitted: auto-generated for clearer automation signalling.

Saving updates .env on the server and reloads mail in this process (no systemd restart needed for SMTP).

Edit SMTP

Current status

Admin alerts (signups & deletions)

Get emailed when users register or delete their own account. Toggles and the optional recipient list are stored in the database. If “Recipient addresses” is empty, the server will still try to deliver alerts using the SMTP login address, then ADMIN_EMAIL in config, then the first active admin account — but adding at least one address below is best so you always know where mail goes. Use Send test with the values currently in the form — saving first is optional.

Optional but recommended: one address per line or comma-separated. If left empty, signup/delete alerts still use the SMTP mailbox / admin fallback above. Send test below needs either this box or Send test to (SMTP section).

AI Enhance (Groq)

Configure the Groq API used by the Generate page “AI Enhance” feature. Values are written to .env on this server and reloaded immediately (same pattern as SMTP).

Edit


    

AI Enhance limits per plan (FREE / PACK1 / PACK2) → Plans tab, AI Enhance column. Reset a user’s today count → Users → Reset AI enhance.

Security & compliance

Audit log

Append-only history of sign-ins, admin changes, purchases, and automated system events.

Total events —
How to read this log

Who is the signed-in account (email when still in the database). Target is the affected resource; for user targets the account email appears when the row still exists.

Search matches action, details, target type, and IP. Export CSV for compliance. Clear log deletes all rows and writes one replacement entry — type CLEAR_AUDIT to confirm.

—
—
When Who Action Target Details IP
Loading version…

Active jobs — restart warning

A restart can interrupt queued or running synthesis for these accounts. You can still proceed.

Restart scheduled

—