Skip to main content
Version: Next

CLI Reference

The Shyntr Identity Hub includes a built-in CLI for tenant management, client registration, connection management, and key operations.

Usage Syntax

./shyntr [command] [flags]
Getting Help

Use --help on any command:

./shyntr --help
./shyntr create-client --help

System Commands

migrate

Runs database migration and initialization tasks.

./shyntr migrate

This command ensures:

  • schema updates are applied
  • system scopes are seeded
  • default outbound policy data is initialized where required

serve

Starts the public and admin HTTP servers and the background workers.

./shyntr serve

Tenant Management

create-tenant

Creates a new tenant.

./shyntr create-tenant [flags]
FlagRequiredDefaultDescription
--idNoAuto-generated UUIDTenant ID
--nameNoSame as --idTenant name
--display-nameNoSame as --nameHuman-readable display name
--descNoCLI CreatedDescription

Examples:

Create tenant with generated UUID
./shyntr create-tenant --name "Acme Corporation"
Create tenant with explicit ID
./shyntr create-tenant \
--id acme \
--name "Acme Corporation" \
--display-name "Acme Corp" \
--desc "Production tenant for Acme"

get-tenant

./shyntr get-tenant [id]

update-tenant

./shyntr update-tenant [id] [flags]

Supported flags:

  • --name
  • --display-name

delete-tenant

./shyntr delete-tenant [id]
Cascading Deletion

Deleting a tenant removes its associated clients, connections, sessions, and related tenant-scoped records. The default tenant cannot be deleted through the CLI.

Scope Management

create-scope

./shyntr create-scope [flags]
FlagRequiredDefaultDescription
--tenant-idNodefaultTenant ID
--nameYes-Scope name
--claimsNo-Comma-separated mapped claims
--descNo-Description
--systemNofalseMark as system scope

get-scope, update-scope, delete-scope

  • ./shyntr get-scope [id]
  • ./shyntr update-scope [id] [--name] [--desc] [--claims]
  • ./shyntr delete-scope [id]

OIDC Client Management

create-client

Registers an OIDC client.

./shyntr create-client [flags]
FlagRequiredDefaultDescription
--tenant-idNodefaultTenant ID
--client-idNoAuto-generated UUIDClient ID
--nameNoNew Client <id>Client name
--secretNoAuto-generated 32-byte hexClient secret for confidential clients
--auth-methodNoclient_secret_basic for confidential clients, none for public clientsToken endpoint authentication method
--redirect-urisNohttp://localhost:8080/callbackRedirect URIs
--post-logout-urisNo-Post-logout redirect URIs
--scopesNoopenid,profile,email,offline_accessAllowed scopes
--audienceNo-Requested audiences
--publicNofalsePublic client mode
--skip-consentNofalseSkip consent screen

Notes:

  • If --client-id is omitted, Shyntr generates a UUID-based client ID.
  • If --secret is omitted for a confidential client, Shyntr generates a 32-byte hex secret and prints it once at creation time.
  • Public clients force token_endpoint_auth_method=none.

Examples:

Create confidential client
./shyntr create-client \
--name "Backend Service" \
--redirect-uris "https://api.example.com/callback" \
--scopes "openid,profile,email,read:api"
Create public client
./shyntr create-client \
--name "React Dashboard" \
--redirect-uris "https://app.example.com/callback" \
--post-logout-uris "https://app.example.com/login" \
--public
Create client with explicit auth method
./shyntr create-client \
--name "Token Client" \
--redirect-uris "https://client.example.com/callback" \
--auth-method client_secret_post

get-client

./shyntr get-client [client_id]

update-client

./shyntr update-client [client_id] [flags]

Supported flags:

  • --name
  • --redirect-uris
  • --post-logout-uris
  • --scopes
  • --secret

delete-client

./shyntr delete-client [client_id]

inject-jwks

Injects a JWKS JSON payload into an existing OIDC client record.

./shyntr inject-jwks [client_id] [jwks_file]

This is primarily useful when a client needs explicit JSON Web Keys stored for verification workflows.

SAML Client (Service Provider) Management

create-saml-client

Registers a SAML service provider.

./shyntr create-saml-client [flags]
FlagRequiredDefaultDescription
--entity-idYes-Service Provider entity ID
--acs-urlYes-Assertion Consumer Service URL
--slo-urlNo-Single Logout URL
--allowed-scopesNo-Allowed scopes mapped into assertions
--tenant-idNodefaultTenant ID
--nameNoSAML AppApplication name
--force-authnNofalseForce re-authentication
--sign-responseNofalseSign the SAML response
--sign-assertionNofalseSign the SAML assertion

Example:

./shyntr create-saml-client \
--name "Salesforce" \
--entity-id "https://acme.my.salesforce.com" \
--acs-url "https://acme.my.salesforce.com/sso/saml" \
--allowed-scopes "openid,profile,email" \
--sign-response \
--sign-assertion

get-saml-client

./shyntr get-saml-client [entity_id]

update-saml-client

./shyntr update-saml-client [entity_id] [flags]

Supported flags:

  • --acs-url
  • --slo-url
  • --allowed-scopes
  • --name

delete-saml-client

./shyntr delete-saml-client [entity_id]

SAML Connection (Identity Provider) Management

create-saml-connection

Registers an external SAML IdP.

./shyntr create-saml-connection [flags]
FlagRequiredDefaultDescription
--metadata-fileYes*-Path to metadata XML
--metadata-urlYes*-URL for metadata retrieval
--tenant-idNodefaultTenant ID
--nameNoSAML IDPConnection name
--sign-requestNofalseSign outbound AuthnRequests

* One of --metadata-file or --metadata-url is required.

get-saml-connection

./shyntr get-saml-connection [id]

delete-saml-connection

./shyntr delete-saml-connection [id]

OIDC Connection (Identity Provider) Management

create-oidc-connection

Registers an external OIDC provider.

./shyntr create-oidc-connection [flags]
FlagRequiredDefaultDescription
--issuerYes-OIDC issuer URL
--client-idYes-Upstream client ID
--client-secretYes-Upstream client secret
--tenant-idNodefaultTenant ID
--nameNoOIDC ProviderConnection name
--scopesNoopenid,profile,emailRequested upstream scopes

get-oidc-connection

./shyntr get-oidc-connection [id]

delete-oidc-connection

./shyntr delete-oidc-connection [id]

LDAP Connection Management

create-ldap-connection

Registers an LDAP or Active Directory connection.

./shyntr create-ldap-connection [flags]
FlagRequiredDefaultDescription
--tenant-idNodefaultTenant ID
--nameNoLDAP DirectoryConnection name
--server-urlYes-LDAP server URL using ldap:// or ldaps://
--bind-dnNo-Bind DN
--bind-passwordNo-Bind password
--base-dnYes-Base DN used for directory searches
--start-tlsNofalseEnable StartTLS
--insecure-skip-verifyNofalseSkip TLS certificate verification

Example:

./shyntr create-ldap-connection \
--tenant-id acme \
--name "Acme Directory" \
--server-url "ldaps://ldap.acme.internal:636" \
--bind-dn "cn=svc-shyntr,ou=service,dc=acme,dc=internal" \
--bind-password "super-secret-password" \
--base-dn "dc=acme,dc=internal"

get-ldap-connection

./shyntr get-ldap-connection [id] --tenant-id <tenant_id>

delete-ldap-connection

./shyntr delete-ldap-connection [id] --tenant-id <tenant_id>

Cryptographic Key Management

import-key

Imports a CA-signed keypair into the Identity Hub.

./shyntr import-key [flags]
FlagRequiredDefaultDescription
--useNosigKey purpose: sig or enc
--certYes-Certificate path
--keyYes-Private key path

Command Quick Reference

CategoryCommandDescription
SystemmigrateRun migrations
serveStart the servers
Tenantscreate-tenantCreate tenant
get-tenantView tenant
update-tenantUpdate tenant
delete-tenantDelete tenant
Scopescreate-scopeCreate scope
get-scopeView scope
update-scopeUpdate scope
delete-scopeDelete scope
OIDC Clientscreate-clientRegister OIDC client
get-clientView client
update-clientUpdate client
delete-clientDelete client
inject-jwksInject client JWKS
SAML Clientscreate-saml-clientRegister SAML client
get-saml-clientView SAML client
update-saml-clientUpdate SAML client
delete-saml-clientDelete SAML client
SAML Connectionscreate-saml-connectionRegister SAML IdP
get-saml-connectionView SAML connection
delete-saml-connectionDelete SAML connection
OIDC Connectionscreate-oidc-connectionRegister OIDC provider
get-oidc-connectionView OIDC connection
delete-oidc-connectionDelete OIDC connection
LDAP Connectionscreate-ldap-connectionRegister LDAP directory
get-ldap-connectionView LDAP connection
delete-ldap-connectionDelete LDAP connection
Keysimport-keyImport CA-signed keypair

Next Steps