Skip to main content

Environment features

Each SIS environment has a set of feature flags that control which Sumvin behaviors apply to users authenticated under that environment. Features are scoped per-environment so dev / staging / prod can run with different cohorts during a rollout. Features live under Environment → Features in the dashboard, and over the SIS API at:
?scope=available returns the full catalogue with each feature’s current enabled status; ?scope=enabled (the default) returns only features that are explicitly enabled.

Available features

Always-required features

A small number of features are required for every Sumvin developer. The dashboard renders them with a Required badge instead of an enable/disable switch and auto-upserts enabled: true on first visit so the row is always present and editable. Today the only always-required feature is kyc. The behavior is:
  • KYC verification is part of the onboarding state machine for every user — developers cannot disable it. The enabled flag on the feature row is always true; the dashboard does not expose a toggle.
  • The config field selects the mode — how the SDK and your client share responsibility for identity verification. Allowed values:
  • Mode resolution at runtime is per environment, with a configurable global default:
    1. If a row exists for the user’s environment with a recognised config.mode, that value is used.
    2. Otherwise the resolver falls back to a global default verification mode. This default is itself configurable and may be set to any of websdk, hybrid, or document_only — it is not fixed to websdk.
    3. An unrecognised config.mode value is ignored; resolution continues to the global default in step 2.
    The mode appears on the kyc_verification onboarding step’s meta.kyc_mode field so clients render the right flow. See OnboardingStep.KYC_VERIFICATION.
  • The dashboard treats an explicit config.mode = "websdk" as the reset-to-baseline value. This only coincides with “no override” when the global default is also websdk; because that default is configurable, the two are not always equivalent.

Setting the KYC mode

Sending {"enabled": false} for kyc is permitted at the API layer for operational symmetry but will not skip the KYC step for users — the onboarding state machine ignores the enabled flag for kyc and only reads config.mode. The dashboard never sends enabled: false for required features. Validation errors on config.mode return 422 with error code KYC-422-001:

Mutual exclusivity: ai_agent vs user_signed_deploy

These two features are mutually exclusive at the environment level. They drive completely different Safe-deployment paths and onboarding cohorts:
  • ai_agent (default): Sumvin deploys the Safe; an agent signer is attached and authorised to sign UserOps for the user.
  • user_signed_deploy (recommended non-default): The user deploys the Safe themselves; only their EOA is an owner. Sumvin can never sign on the resulting Safe.
Trying to enable both returns 409 Conflict with error code SIS-409-008 (Feature Mutex Violation):
To switch between the two for an environment:
  1. PUT .../features/{currently_enabled} with {"enabled": false} to disable the currently-active feature first.
  2. PUT .../features/{the_other} with {"enabled": true} to enable the new one.
The mutex is enforced at write-time. If neither is enabled, the user’s onboarding routes through the byo_safe step instead (BYO — Bring Your Own Safe — the user submits the address of a Safe they already control on-chain). This is the legacy fallback for developers with existing Safe infrastructure.
This mutex enforces a per-environment policy decision. Don’t toggle these flags mid-flow for users already onboarded — switching from ai_agent to user_signed_deploy doesn’t migrate existing wallets, and existing agent-managed Safes will remain agent-managed.

Onboarding cohort summary

The ai_agent / user_signed_deploy choice picks which onboarding step a user runs. Three valid cohorts: Users that have no org_id (non-SIS-managed users) skip both byo_safe and safe_deploy. When picking a cohort:
  • Default to ai_agent unless your integration explicitly needs user-controlled keys.
  • Choose user_signed_deploy if your users must hold sole ownership of their Safe (e.g. compliance, custodial neutrality, or self-custody product positioning).
  • Choose byo_safe only if you already have an on-chain Safe deployment infrastructure and want users to pre-deploy their Safes outside Sumvin.

Setting a feature

The feature endpoints under /v0/organisation/{org_id}/environments/{env_id}/features/ are dashboard-scoped — they authenticate with your dashboard session token used by the SIS Dashboard, not the API keys used by SIS verifier traffic. Most developers will toggle features through the dashboard UI; the underlying call looks like:
A new feature returns 201 Created; a flip on an existing feature returns 200 OK. The mutex (above) is enforced on enabled: true only — disabling never returns SIS-409-008.