The operator console
one place for settings, customers and money.
A tour of /admin, page by page. The console is the MIKODES Admin Kit (packages/admin-kit/) with Vodmill's own sections and pages declared in src/server/admin/manifest.ts. Every change is written to the audit log.
01Overview and Get started
Overview shows the setup progress, the status checks and the figures of the period: workspaces, accounts, paying workspaces, AI calls, credits spent, uploads on disk, source minutes analysed, clips rendered and renders waiting. Get started collects the few fields Vodmill needs before it goes live (product name, accent colour, support e-mail, AI model, transcription provider, public URL, e-mail sender), each linked to its full section.
Status checks (checks in the manifest):
| Check | Severity |
|---|---|
| Public URL is https | Blocker |
| ffmpeg and ffprobe are installed | Warning |
| Transcription is set up | Warning |
| Anthropic key is set | Warning |
| Imports from a link can run | Warning |
| Stripe keys are complete | Warning |
| E-mail can be sent | Warning |
| Plans are consistent | Warning |
| Campaign views can be counted automatically | Warning |
| Campaign view tracking is running | Warning |
| YouTube publishing is set up | Warning |
| Scheduled posts are going out | Warning |
A check for a feature that is switched off passes with a note such as "campaigns are off".
02Settings sections
Each settings section is its own entry in the sidebar, under the headings Setup, Money, Product and System. Every one is explained field by field in Configuration: Brand, Legal, Access, AI, Transcription, Imports, Clipping defaults, Rendering, Campaigns, Publishing, Credits, Public API, Customer billing, Server, E-mail, Integrations, Notifications. A field pinned by a variable in .env (for example PUBLIC_URL) is shown locked. Only owners can change keys and the campaign commission.
03Customers: Workspaces and Users
- Workspaces: every customer workspace with its plan and credits. "New workspace (client name)" creates one, for one workspace per client. Per row: change the plan by hand, and add or remove credits with a reason the workspace sees in its credit history.
- Users: app accounts, staff and customers. Staff see every workspace; customers see the workspaces they were invited to. "Invite staff (e-mail)", a password reset link per user, disable an account, make or remove staff.
04Product: Sources, Render queue, Caption presets, Music library
- Sources: every source video on the server: who added it, its state, whether the rights statement was confirmed, and what it cost. A source can be deleted here.
- Render queue: what is rendering, what waits and what failed. Cancel a render (its credits go back) or delete one with its files. The page also shows how many renders run at once and after how many days files are deleted.
- Caption presets: built-in styles and your own presets for every workspace (Caption presets).
- Music library: tracks users can pick in the editor. Upload MP3, M4A or WAV up to 30 MB, give each track a name, a mood (people pick music by mood) and a credit line (artist, title, licence) that is shown to users. Upload only music you own or hold a licence for. A new install has no tracks.
05Money: Plans, Credit packs, Revenue
- Plans and Credit packs: Plans and credits.
- Revenue: payments recorded by the Stripe webhook, split into plan subscriptions and credit packs.
06Campaigns, Submissions, Payouts
Three pages for the campaign programme, described in Campaigns. The Payouts page is visible to managers and owners only. Every write from these pages is in the audit log as product.campaign.*.
07Monitor: System health, AI usage, Storage, Status, Audit log
| Page | What it shows |
|---|---|
| System health | App and schema version, Node.js version, ffmpeg and ffprobe (found or missing, version, path), the data folder and its free space (marked low under 5 GB and critical under 1 GB), the databases, missing keys with what each switches on, the last backup and the backup commands |
| AI usage | Every AI call with model, input and output tokens and result; totals per model for 30 days. Your provider bills you for these. |
| Storage | Disk used per workspace. A plan's storage limit counts source videos, renders and uploads together. |
| Status | The status checks with their last result |
| Audit log | Every sign-in and every change, who made it and what changed |
08Security & alerts, Notifications
- Security & alerts: two-factor sign-in for your account (authenticator app), where you are signed in, and what the console tells you without being asked.
- Notifications (a settings section): where the console's own alerts go. "Send alerts to" (an e-mail address), "Webhook URL" and "Webhook signing secret". These are alerts for you, the operator; customers' webhooks are on their Developers page.
09Console team
Team lists the people who can open the console, separate from app accounts. Roles (packages/admin-kit/contract/manifest.ts):
| Role | Can |
|---|---|
| Owner | Everything, including keys, the campaign commission and members |
| Manager | Change settings, use the product pages, handle payouts |
| Viewer | Read only |
Lost owner password: recover-owner.js (First steps).