Everything you can do with SwaYantra
A hands-on walkthrough of the whole product. Start at the top if you're new, or jump straight to the chapter you need. Every feature here is shipping today.
Welcome
SwaYantra is a governed AI workforce. Instead of every teammate copy-pasting prompts into a chat tool, your business runs on a shared roster of named specialists — a deal strategist who drafts quotes, a support responder who writes customer replies, an outbound strategist who enriches leads, an ops finance lead who reconciles spend. Every run is logged, every irreversible action requires an approval, and every customer-facing message can be supervised before it goes out.
What most teams do in their first week:
- Day 1 — Sign up, invite 2–3 teammates, run a few starter skills.
- Day 2 — Connect Slack so your team can invoke specialists in-channel.
- Day 3 — Connect Gmail / Outlook and ship the customer-reply workflow under approvals.
- Day 5 — Add a CRM (HubSpot or Salesforce) and your sales SKU catalog for quote drafts.
- Day 7 — Decide which personas + workflows belong in your team's daily flow, and which approval templates are ready to graduate.
Your first 10 minutes
The fastest path from signup to running something useful:
- Go to /signup. Pick Solo (1 seat, 14-day trial) or Team (5+ seats). Enter your work email.
- Click the magic link we email you within 30 seconds.
- Enter your team / company name, a short URL slug, your seat count, and billing cadence. Solo stays at 1 seat; Team starts at 5.
- Continue through Stripe Checkout. Solo starts a 14-day trial; Team starts paid.
- After provisioning, open Home or Onboarding. The onboarding flow tracks five steps: confirm the workspace, invite teammates, add an API key, enable starter personas, and run your first skill. You can skip any step and come back later.
Personas: your AI workforce
A persona is a named specialist with a specific job. The catalog spans business-ops, engineering, design, product, marketing, support, and sales. Each persona ships with a curated chain of skills it knows how to run, so you don't have to assemble prompts yourself.
The starter business roster
The personas most teams enable first:
- Deal strategist — drafts quotes from your SKU catalog and scores deals by likelihood of close.
- Support responder — drafts customer email replies that an admin approves before sending.
- Outbound strategist — enriches an inbound lead from public signals.
- Sales coach — gives an SDR feedback on a recorded call or transcript.
- Sales data agent — produces a daily / weekly digest of recent activity.
- Ops finops, technical writer, incident commander, and others — see the Personas reference for the full list.
How to find the right persona
- Browse the catalog. Open Personas in the workspace admin.
- Enable per workspace.Personas are opt-in. A disabled persona won't show in the Run tab, Slack, MCP tool list, or scheduled-job picker.
- Custom personas. On Team and Enterprise plans, an Admin can compose a custom persona — pick a base, override the system prompt, set the skill list, save. Your custom persona lives only inside your workspace.
Custom personas
On Team and Enterprise plans, an Admin can compose a custom persona to fit a workflow that the curated catalog doesn't cover exactly. Custom personas live only inside your workspace.
- Open Personas → Custom and click New custom persona.
- Pick a base persona to inherit defaults from, then override the system prompt, the model preferences, and the skill list. The skill picker only shows skills your workspace has enabled.
- Save. The custom persona shows up in the Run tab, in Slack / MCP tool listings, and as a candidate for scheduled jobs immediately.
- Edits are versioned in the audit log so you can trace who changed the system prompt or skill list and when.
Skills and how they run
A skill is the actual unit of work. quote-draft reads the SKU catalog + discount rules and produces a quote. support-reply-draft writes a customer reply. outbound-enrich takes an ICP description and a company URL and produces a fit assessment.
Runner modes
SwaYantra picks one of four runner modes per skill, in priority order:
- Stub — synthetic responses for the very first demo run; no provider cost.
- Provider — direct call to Anthropic / OpenAI / Google using your BYOK key, your managed key, or a platform fallback.
- Claude CLI — shells out to
claude -pfor fast single-host deploys. - Docker — production default; spawns a sandboxed worker per run.
Agent-loop mode (multi-step)
Some skills — quoting, customer reply, multi-system data lookups — need more than one LLM turn. The agent-loop runner drives a real tool-use loop: the model plans, calls a tool (e.g. read CRM, draft email), reads the result, decides the next step. The loop is bounded by an iteration cap (default 8), a token cap, and a per-tenant cost ceiling. Every tool call goes through the approval taxonomy in chapter 7 — irreversible actions pause the loop until a human approves, and the run resumes from where it left off.
Running your first skill
- Open the Run tab from the workspace admin sidebar.
- Pick a persona (try the deal strategist).
- Pick a skill from the dropdown (try
quote-draft). - Paste your input — for the deal strategist, that's a customer name + seat count + term. Click Run.
- The run shows a Running…state, then the final result appears in the Output panel. You'll also see the run reflected on Home and in the audit log.
Scheduled jobs
Some workflows are not on-demand — they're "every weekday at 8am" or "hourly during business hours." The Scheduled jobs tab in the workspace admin lets you run any persona + skill combo on a cron schedule.
- Open Scheduled jobs → New job.
- Pick the persona + skill, the cron expression, the input template, and the output destination (Slack thread, email, webhook, or audit-only).
- The capability registry validates the combo: not every persona+skill+trigger+output is allowed, and the picker shows you the green-listed pairs.
- Hit Save. The next fire fires; you can also Run now to test.
Misfires (e.g., the worker was down at the scheduled instant) are handled per the job's misfire policy: skip, run-once-late, or run-all-missed. Atomic leases via FOR-UPDATE-SKIP-LOCKED prevent two workers from running the same firing twice.
Approvals: who can do what, when
Every action SwaYantra takes carries an action class. The tenant approval policy maps each class to gated or ungated:
- informational — never gated. Reading a CRM record. Searching memory.
- reversible-write — default ungated; can be flipped on per workspace. Updating a CRM deal stage.
- irreversible-write — default gated. Submitting a form on a customer portal. Running a desktop command.
- customer-facing — always gated by default. Sending an email to a customer. (Per-template graduation in the next chapter.)
- bulk-send — gated above a per-tenant item-count threshold (default 5). Sending the same email to many recipients.
- financial, legal, bulk-send — always gated, no override. Sending a quote, sending a contract for signature, blasting a campaign.
How an approval flows
- The workflow proposes an action and writes a row to
pending_approvals. - An admin sees it on the Approvals tab, reviews the proposed payload, and clicks ✓ or ✗ (with an optional reason).
- A resume-callback URL fires back to the orchestrator if the workflow registered one; otherwise the workflow polls.
- Approvals expire after 24 hours by default; expired rows transition to
expiredand the workflow short-circuits.
Approval graduation
Customer-facing approvals are gated by default — but for low-risk repeat templates (e.g. order-confirmation emails, password-reset notifications), a tenant admin can graduate the template after N successful supervised approvals. Graduated templates auto-execute; subsequent runs skip the approval queue.
- Run the workflow under approvals. Each approve increments the template's counter; each reject resets it to zero.
- Once the counter clears the threshold (default 20), the Graduate button lights up in the Governance → Approval templates tab.
- An admin reviews the template's history (recent payloads, rejection rate, drift signals) and clicks Graduate. The action is audited as
approval_template.graduated. - From that point, the workflow inserts an auto-approved trace row instead of pausing.
Drift detection auto-revokes
A periodic detector compares post-graduation payload size to pre-graduation samples. If the ratio drifts > 2× or < 0.5× of the baseline, the template is auto-revoked with reason drift-detector: payload-size-ratio=…, gating resumes immediately, and the audit chain records the event.
Email workflows
Connect Gmail (Google OAuth), Outlook (Microsoft Graph), or any IMAP+SMTP mailbox. SwaYantra polls the connected inbox, drafts replies via the support responder persona, and queues a customer-facing approval. After approve, the reply sends from the connected account; after reject, the workflow halts.
Connect a mailbox
- Open Integrations → Email.
- Pick Gmail, Outlook, or IMAP. For Gmail / Outlook, click Connect — you'll be redirected to the provider's consent screen and back. For IMAP, paste the server hostnames + credentials (encrypted at rest).
- The connection appears under Connections with a green "polling" badge once the first successful poll completes.
The customer-reply workflow
- An inbound message arrives in the connected inbox.
- The polling daemon parses it, builds a draft prompt, and runs
support-reply-draftvia the support responder persona. - The drafted reply is queued as a customer-facing approval. The admin reviews and clicks ✓ or ✗.
- On ✓, the reply sends back to the customer in the same thread (the In-Reply-To and References headers are preserved).
- On ✗, the workflow halts. The rejection reason is recorded.
Quotes and pricing
The Quotation Workflow turns "@acme 25 seats annual pro" into a priced, approval-gated, customer-ready quote. Configure it once, then drive it from Slack, the API, MCP, or scheduled jobs.
Build the catalog
- SKUs — open Pricing → SKUs. Add list-price entries with currency, unit (seat / usage / flat / tier), and metadata.
- Discount rules — open Pricing → Discount rules. Each rule has a JSON-DSL condition (e.g.
seats >= 10 AND term_months >= 12 → 15% off), a priority, and a validity window. Rules apply in priority order against the running subtotal. - Tax rules — multi-jurisdiction. Stack additively: a Canadian Ontario customer sees GST + PST applied on the post-discount subtotal.
- Quote templates — preset line items, currency, and tax jurisdiction. The deal strategist references a template by id; user input merges over the defaults.
Multi-currency
Each SKU declares its currency. A quote built from those SKUs uses the same currency. Cross-currency conversion isn't supported in v1 — quotes mismatched on currency are rejected at the route layer.
Approval flow
Every quote is action-class financial, which means it's always gated and the template can never be graduated. The deal strategist drafts; an admin reviews; the quote sends only after ✓.
Spreadsheets
Three connectors live under Integrations → Spreadsheets:
- Google Sheets — read ranges, append rows, update ranges via the Sheets v4 API. Connect via Google OAuth.
- OneDrive Excel — read worksheets + ranges via Microsoft Graph. Connect via Microsoft OAuth.
- Drive Excel — read .xlsx files stored on Google Drive (uses
node-xlsxafter a Drive download). Connect via Google OAuth.
A common pattern: sales data agent watches a Sheets tab, picks up new rows, runs an enrichment skill, writes results to a sister tab — all on a scheduled-job cadence.
CRM (HubSpot, Salesforce)
Connect HubSpot or Salesforce under Integrations → CRM:
- HubSpot — OAuth connect. Operations: list deals, get deal, update deal, get contact, get company, create note. Tokens auto-refresh.
- Salesforce — OAuth connect (sandbox or production org). SOQL queries + SObject CRUD. The deal strategist sees Salesforce Opportunities in the same canonical
Dealshape it sees from HubSpot.
CRM-write actions — updating a deal stage, creating a note — are reversible-write by default and can be flipped to gated per tenant policy (chapter 7).
Calendar
Free/busy lookup + create/update events on Google Calendar (Calendar API) or Outlook Calendar (Microsoft Graph). Connect under Integrations → Calendar. Common workflow: sales coach checks the rep's availability, proposes three slots in the customer email draft, and creates the event after the customer picks one.
Conversation memory + injection guard
When a workflow has access to a conversation key (e.g. (tenant, channel, external_thread_id)), SwaYantra persists a rolling summary + turn count. The next run for the same key reads it back and produces a more grounded reply.
Retention
- standard — store summary + counters (default; 365-day TTL).
- metadata-only — store counters + last-activity timestamp; drop the summary text (90-day TTL).
- none — no row written. Read returns null. (For tenants whose policy forbids any conversation memory.)
Untrusted-evidence envelope
When a workflow injects retrieved content into a prompt — memory, scraped pages, tool-call results, customer-supplied messages — the content is wrapped in an <untrusted-evidence>block with an explicit standing notice that the model must NOT follow directives inside. A regression test corpus covers "ignore previous instructions", role-play attacks, base64-encoded directives, fence-line forgery attempts, and control-character smuggling.
Browser automation
When a target system has no API, or the API is too incomplete to drive the workflow, SwaYantra runs the persona inside a sandboxed browser. The runner mode is computer-use; the underlying browser pool is Browserbase by default (or your own Playwright pool when monthly Computer Use spend justifies it).
Domain allowlist (deny-all default)
A run against a non-allowlisted domain returns 403 before the model is invoked. Configure the allowlist under Governance → Browser allowlist:
- Per-persona entries beat tenant-wide entries.
- Per-action granularity: navigate, read, fill, click, submit, screenshot. Default is read-only (navigate + read + screenshot).
- Subdomains are NOT auto-allowed — admins add each subdomain explicitly so a
*.stripe.comallow can't be bypassed byevil.stripe.com.attacker.tld.
Caps
Each browser run has wall-clock (default 5 minutes), iteration (24), screenshot count (40), and cost ($2) caps. Hitting any cap halts with outcome cap-exceeded and a clear reason in the audit log.
Screenshot redaction
Every screenshot runs through a PII detector (rule-based regex + Luhn, optional LLM vision pass) and a redaction step:
- raw — pass through unchanged (only for tenants with explicit policy approval).
- mask — overlay solid black rectangles on findings (default).
- blur — heavy box-blur on findings.
- skip-storage — don't store the bytes; keep findings + metadata only.
PII samples are never stored at full fidelity — credit-card matches are stored as ****1111, emails as a***@***, etc.
DOM drift detection
On the first successful run against a target URL, SwaYantra captures a structural fingerprint (tag stack, attribute keys, form fields, anchor / button text). On subsequent runs the new fingerprint is compared; drift > the per-target threshold (default 25%) marks the target drifted and pauses the workflow until an admin re-verifies under Governance → Browser fingerprints.
Desktop automation
For legacy apps with no API and no web UI — Lotus Notes, AS/400 clients, on-prem ERPs, locally-installed Excel with VBA macros — SwaYantra ships a tenant-installed desktop agent. The agent runs as a small background binary on the user's machine, dials OUT to SwaYantra over wss (no inbound surface; corporate-firewall friendly), and exposes an MCP-style RPC for find_window, click, type, screenshot, OCR, run_command, and clipboard / file read/write.
Install
- Open Desktop → Agents and click Provision new agent. Pick a name + platform (Windows / macOS / Linux) and provide the agent's ed25519 public key.
- SwaYantra returns a one-time install token + initial JWT secret. Embed both into the agent installer (or paste them into the agent's config when running locally).
- The agent dials out, presents its JWT, and the connection appears as connected on the agent list. The JWT secret rotates on every reconnect.
- Auto-update polls a signed manifest hourly; only ed25519-signed manifests from the bundled trust anchor are accepted, so a compromised control plane can't push a malicious binary.
Per-app allowlist (deny-all default)
Configure under Governance → Desktop allowlist. Default state empty → deny-all. An admin grants per-(persona, app, path-pattern, actions) — e.g., the deal strategist persona may find_window + screenshot on Excel installed under C:/Program Files/Microsoft Office/**, but not run_command.
The allowlist is enforced server-side BEFORE every dispatch and also agent-sideas defense in depth — a compromised SwaYantra control plane cannot trick a healthy agent into running an action the tenant didn't approve. Irreversible actions (click / type / run_command / write_clipboard) additionally go through the C.0a approval gate (chapter 7).
Screenshots + compliance
- Desktop screenshots use the same redaction modes as browser, with a more conservative 30-day default retention (a desktop screenshot can capture an entire desktop, not just one tab).
- Every action lands in
desktop_actionswith timestamp, app, action type, screenshot id, approval status, and approver. - Open Desktop → Compliance bundle to export a signed CSV of every action in a period. The bundle carries an ed25519 signature over
body_hash || period_start || period_end, so an external auditor can verify content + period weren't tampered after the fact.
Inviting your team
Invites expire after 14 days and can only be used once. Pending invites stay visible in the Team tab until they're accepted, expired, or replaced with a fresh invite.
- Open the Team tab.
- Click New invite. Enter one email address and pick a role (Viewer, Operator, or Admin — see the next chapter).
- They'll get an email with a link. Clicking it lets them set a password and lands them in the workspace admin.
- If an invite expires, send a fresh one from the same screen.
Roles and permissions
SwaYantra ships with three built-in roles:
- Viewer — sign in, browse Personas + Skills, run skills, read audit / privacy screens.
- Operator — Viewer + read keys / billing / governance + approve customer replies + manage scheduled jobs.
- Admin — full workspace control: invites, role changes, persona toggles, API keys, MCP / API tokens, allowlists, approval-template graduation, managed-key budgets, deletion, and Enterprise rollout settings.
Custom roles are available on Team and Enterprise plans for finer-grained permission models. Open Roles to compose a role from the resource × action permission matrix (personas, skills, keys, audit, team, billing, governance, identity, trust, privacy, backup) and assign users to it.
Custom roles
Team and Enterprise plans can compose custom roles when Viewer / Operator / Admin isn't the right granularity. Open Roles → Custom roles.
- Click New role and pick a name (e.g. "Approver only", "Quote desk").
- Toggle the resource × action matrix: each row is a resource (personas, skills, keys, audit, team, billing, governance, identity, trust, privacy, backup, roles), each column is an action (read, write, run, export, delete).
- Save. The role becomes assignable from the Team tab's role picker.
A custom role inherits from the legacy three-role permission set as a fallback — so a missing tile means "defer to the user's legacy role" rather than "deny". To explicitly deny, leave the tile off in BOTH the custom role and the legacy role; or assign the user to a Viewer base + a custom role that adds only the resources you want.
SSO and identity (Enterprise)
Enterprise workspaces can configure single sign-on under Identity → SSO. Two protocols are supported: SAML 2.0 (Okta, Azure AD, OneLogin, Auth0) and OIDC (Google Workspace, Auth0, Azure AD).
- Open Identity → SSO. Pick the protocol.
- Paste your IdP metadata XML (SAML) or issuer + client id + client secret (OIDC). The form validates the configuration before save.
- Pick the email-domain claim and the role-mapping rules — by default, all SSO users land as Viewers; admins promote them after first login.
- Test with the Try SSO login button on the same page; the test flow runs through your IdP without affecting the production session.
- When the test passes, flip Require SSO. Existing password sessions stay valid until they expire; new logins go through the IdP.
Feature flags + workspace settings
Some product surfaces are off by default for new workspaces and roll on as the underlying feature is generally available. The Settings → Feature flags tab shows which flags are currently active for your workspace and which are pending operator enablement (Enterprise rollouts).
- Self-serve flags — most retention defaults, governance toggles, and UI preferences live here. Admin can flip them anytime.
- Operator-controlled flags — early-access features, dedicated-instance mode, and SSO-required mode. Your rollout team enables these per workspace; the flag shows up read-only with a contact link for changes.
- Plan flags — features tied to your plan (custom roles, custom personas, data residency, dedicated instance) appear locked on Solo / Team plans with an upgrade link.
Other settings on the same page: workspace name + slug, default locale + timezone, retention defaults, notification preferences, and the Slack / Telegram / Discord connection summary.
Slack, Telegram, Discord
Your team doesn't have to switch to the workspace admin to use a specialist. Connect the channel tools they already live in.
Slack
- Open Team → Connect Slack.
- Authorize the SwaYantra Slack app. We ask for the minimum scopes needed.
- Add the bot to a channel and invoke a persona inline.
- The run is audited just like an admin-panel run — with the channel and the user who asked attached to the log.
Telegram and Discord
Full setup guides for Telegram and Discord are in the Integrations page. Each ships its own install flow with HMAC + signed-request verification.
Claude Desktop, Cursor, Windsurf
SwaYantra speaks Model Context Protocol, so any MCP-speaking IDE can connect in a single config block.
- Open Keys → Developer tools. Create a token with a memorable name (e.g. "Alex's laptop"). The plaintext is shown once; SwaYantra stores only its SHA-256 hash.
- Copy the config snippet we display:
{
"mcpServers": {
"swayantra": {
"url": "https://app.swayantra.ai/t/your-workspace/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_TOKEN"
}
}
}
}Paste it into your IDE's MCP config. Every persona your workspace has enabled shows up as a callable tool inside the IDE. Every call is audited on the SwaYantra side, so your admin can see exactly which laptops are running what.
Bearer-token API
For non-MCP REST clients — your own backend services, partner integrations, automation platforms — issue a tenant API token and call /runs + related endpoints over plain HTTPS. Open Keys → API tokens to create one.
Scopes
Each token carries a subset of these scopes:
runs.execute,runs.readaudit.readpersonas.read,skills.readquotes.read,quotes.writescheduled-jobs.read,scheduled-jobs.write
The token is shown once at issuance — stored as a SHA-256 hash thereafter. Authorization is Bearer swyt_{workspace-slug}_…. The token's scopes map to the same RBAC permissions an admin would have for the resource × action, so existing route gates work unchanged.
API keys and budgets
SwaYantra uses two kinds of keys. You can mix them.
- Customer-owned keys (BYOK)— bring your own Anthropic, OpenAI, or Google key. You're billed directly by the provider. We encrypt at rest using AES-256-GCM with a scrypt-derived KEK; the plaintext key never appears in logs or audit entries. Backups include only encrypted key material.
- Managed keys— we provide the keys, you pay us a flat rate per seat with a monthly token ceiling. Use this when you don't want to wrangle vendor relationships.
Adding a key
- Open Keys in the workspace admin.
- Pick the provider. Paste the key. Click Save. Only the last four characters are ever shown after that.
- To test: go to Run, pick any persona that uses that provider, and run a short skill.
Budgets
Open Keys → Managed budget for current spend, monthly ceiling, and overage behavior:
- Throttle — block new managed-key runs after the limit is reached.
- Invoice — continue running and bill overage outside the hard cap.
- Cutoff — hard stop until the budget is raised or the next billing period starts.
Audit log
Every meaningful workspace change and every workflow step writes to the audit log. Role changes, invites, key updates, onboarding acknowledgements, run outcomes, approvals, allowlist edits, agent connect / disconnect, drift events, graduations — all land here. "Tamper-evident" means each row includes a SHA-256 hash of the previous row, so if any row is edited or removed after the fact, verification breaks at the altered row.
What you can do with it
- Filter. Narrow the loaded entries by action, actor, or resource.
- Verify. One click recomputes every hash. You get a green chain verified badge or a red chain broken at seq N with the exact row.
- Export. CSV for spreadsheets or JSON for scripts / archival.
For desktop automation specifically, a separate Compliance bundle export (chapter 16) ships as an ed25519-signed CSV that an external auditor can verify without access to your workspace.
Privacy, export, deletion
You own your data. The Privacy tab gives you an instant export, a live data map, and the delete flow.
Export
Download everything we have about your workspace: tenant info, users, personas, runs, conversation memory (per the retention class you chose), audit entries, scheduled jobs, quotes, approvals, browser sessions, desktop actions, and configuration. The download is JSON and starts immediately.
Delete
Deletion is a soft-delete with a 30-day grace window. Your workspace becomes invisible immediately; we can restore within 30 days if you change your mind. After 30 days, hard-deletion runs automatically and the data is unrecoverable. You can ask us to hard-delete immediately by emailing security@swayantra.ai.
Data residency (Enterprise)
Enterprise workspaces can pin their data to a specific region during onboarding. Your rollout team confirms the target region before production use.
Backup and restore
The workspace admin exposes a Backup tab. You can download a full workspace backup bundle and restore from a prior backup JSON file.
Backups include encrypted key material, MCP / API token hashes, custom roles, custom personas, budgets, audit history, scheduled jobs, allowlists, approval templates, agent registrations (with hashed install tokens), and recent run history. Restore preserves the current admin session so the initiator is not locked out mid-recovery.
Billing, plans, seats
Three plans:
- Solo — one seat, 14-day trial.
- Team — 5-seat minimum, 20-seat maximum. Annual discount available.
- Enterprise — SSO, custom roles, dedicated instance, data residency, SOC 2 attestation on request, signed compliance bundles.
The workspace admin's Billingtab handles plan, seat, cadence, invoice, and payment-method management. Subscription changes go through Stripe first; SwaYantra reconciles the workspace record from Stripe webhooks (signed + timestamp- windowed + de-duplicated, so a replay can't double-charge).
Changing your plan
- Open the Billing tab.
- Choose the target plan, seat count, and monthly or annual cadence.
- Submit the change; the page updates as the Stripe-backed subscription change settles.
Enterprise / contact-sales changes can still involve the SwaYantra team when the commercial structure sits outside self-serve Stripe plans.
Troubleshooting
- A skill run is stuck at "pending".
- Refresh the page once. If it's still stuck after about a minute, you may have hit a rate limit or upstream model issue. Retry once, then email hello@swayantra.ai with your workspace name and the approximate timestamp.
- An agent-loop run shows "awaiting-approval".
- The model called a tool whose action class requires approval. Open the Approvals tab, review the proposed payload, and click ✓ or ✗. The run resumes from where it paused.
- A browser run returns 403 immediately.
- The target domain isn't in the allowlist for the calling persona. Open Governance → Browser allowlist and add the exact domain (subdomains are not auto-allowed).
- A browser fingerprint flipped to "drifted".
- The target site's DOM changed enough to cross the threshold. Open Governance → Browser fingerprints, review the change report, and click Re-verify to pin the new shape, or Pause to halt automation against that target.
- My desktop agent won't reconnect.
- JWTs are valid for 24 hours; longer offline windows require a re-bootstrap. Open Desktop → Agents, find the agent, and click Issue new install token. Embed the new token + JWT secret on the agent and restart it.
- I can't log in or I picked the wrong workspace.
- Go to /login, enter your email, and choose the correct workspace from the lookup flow. If you still can't get in, ask an admin for a fresh invite / password-set link.
- Audit chain verification failed.
- This is serious. Don't take any destructive action. Email security@swayantra.ai immediately with the broken seq number shown in the error.
Getting help
We read every email.
- Product questions — hello@swayantra.ai or the contact form.
- Security reports — security@swayantra.ai. Encrypted reports welcome; PGP key on the trust page.
- Enterprise sales — contact form. A human replies, not a bot.
- Documentation feedback — hello@swayantra.ai. If the guide and the product disagree, we want the diff.