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 aRequired 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
enabledflag on the feature row is alwaystrue; the dashboard does not expose a toggle. -
The
configfield 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:
- If a row exists for the user’s environment with a recognised
config.mode, that value is used. - 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, ordocument_only— it is not fixed towebsdk. - An unrecognised
config.modevalue is ignored; resolution continues to the global default in step 2.
kyc_verificationonboarding step’smeta.kyc_modefield so clients render the right flow. SeeOnboardingStep.KYC_VERIFICATION. - If a row exists for the user’s environment with a recognised
-
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 alsowebsdk; because that default is configurable, the two are not always equivalent.
Setting the KYC mode
{"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.
409 Conflict with error code SIS-409-008 (Feature Mutex Violation):
PUT .../features/{currently_enabled}with{"enabled": false}to disable the currently-active feature first.PUT .../features/{the_other}with{"enabled": true}to enable the new one.
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
Theai_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_agentunless your integration explicitly needs user-controlled keys. - Choose
user_signed_deployif your users must hold sole ownership of their Safe (e.g. compliance, custodial neutrality, or self-custody product positioning). - Choose
byo_safeonly 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:
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.
Related
- Onboarding state machine — how features map to user-visible steps
- Wallets guide — Safe vs EOA semantics
- Safe user operations — the prepare/submit flow when
user_signed_deployis enabled