{"repo":"logto-io/logto","free":true,"listed":false,"github":"https://github.com/logto-io/logto","clone":"git clone https://github.com/logto-io/logto.git","description":"🧑‍🚀 Authentication and authorization infrastructure for SaaS and AI apps, built on OIDC and OAuth 2.1 with multi-tenancy, SSO, and RBAC.","language":"TypeScript","stars":14356,"topics":["authentication","authorization","email","identity","jwt","login","logto","mfa","oauth2","openid-connect","password","passwordless","rbac","saml","signup","sms","social-login","sso","totp","typescript"],"license":"MPL-2.0","category":"auth_platform","readme_excerpt":"<p align=\"center\">\n  <a href=\"https://logto.io/?utm_source=github&utm_medium=readme\" target=\"_blank\" align=\"center\" alt=\"Go to Logto website\">\n    <picture>\n      <source width=\"200\" media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/logto-io/.github/raw/master/profile/logto-logo-dark.svg\">\n      <source width=\"200\" media=\"(prefers-color-scheme: light)\" srcset=\"https://github.com/logto-io/.github/raw/master/profile/logto-logo-light.svg\">\n      <img width=\"200\" src=\"https://github.com/logto-io/logto/raw/master/logo.png\" alt=\"Logto logo\">\n    </picture>\n  </a>\n</p>\n\n[![discord](https://img.shields.io/discord/965845662535147551?color=5865f2&label=discord)](https://discord.gg/vRvwuwgpVX)\n[![checks](https://img.shields.io/github/checks-status/logto-io/logto/master)](https://github.com/logto-io/logto/actions?query=branch%3Amaster)\n[![release](https://img.shields.io/github/v/release/logto-io/logto?color=3a3c3f)](https://github.com/logto-io/logto/releases)\n[![core coverage](https://img.shields.io/codecov/c/github/logto-io/logto?label=core%20coverage)](https://app.codecov.io/gh/logto-io/logto)\n[![cloud](https://img.shields.io/badge/cloud-available-7958ff)](https://cloud.logto.io/?sign_up=true&utm_source=github&utm_medium=repo_logto)\n[![gitpod](https://img.shields.io/badge/gitpod-available-f09439)](https://gitpod.io/#https://github.com/logto-io/demo)\n[![render](https://img.shields.io/badge/render-deploy-5364e9)](https://render.com/deploy?repo=https://github.com/logto-io/logto)\n\n# Logto\n\n**Logto is the modern, open-source auth infrastructure for SaaS and AI apps.**\n\nIt takes the pain out of OIDC and OAuth 2.1 and makes it easy to build secure, production-ready auth with multi-tenancy, enterprise SSO, and RBAC.\n\n<p align=\"center\">\n  <a href=\"https://logto.io/\">website</a> •\n  <a href=\"https://cloud.logto.io/\">cloud</a> •\n  <a href=\"https://docs.logto.io\">docs</a> •\n  <a href=\"https://openapi.logto.io/\">api</a> •\n  <a href=\"https://blog.logto.io/\">blog</a> •\n  <a href=\"https://auth-wiki.logto.io/\">auth wiki</a> •\n  <a href=\"https://logto.io/subscribe\">newsletter</a>\n</p>\n\n![Logto features](./assets/logto-features.png)\n\n## Why Logto?\n\nBuilt for teams scaling SaaS, AI, and agent-based platforms without the usual auth headaches.\n\nWith Logto, you get:\n\n- **Multi-tenancy, enterprise SSO, and RBAC**: ready to use, no workarounds.\n- **Pre-built sign-in flows**, customizable UIs, and SDKs for 30+ frameworks.\n- **Full support for OIDC, OAuth 2.1, and SAML** without the protocol pain.\n- **Works out-of-the-box for Model Context Protocol and agent-based AI architectures**.\n\n[🗺️ See all features →](https://docs.logto.io/?ref=readme)\n\n## Get started\n\nPick your path:\n\n- [**Logto Cloud**](https://cloud.logto.io/?sign_up=true&ref=readme): The fastest way to try Logto. Fully managed, zero setup.\n- [**Launch Logto in GitPod**](https://gitpod.io/#https://github.com/logto-io/demo): Start Logto OSS in seconds.\n\n  Wait for the message `App is running at https://3002-...gitpod.io`, then click the URL starting with `https://3002-` to continue.\n\n- **Local development:**  \n\n  ```bash\n  # Using Docker Compose(requires Docker Desktop)\n  curl -fsSL https://raw.githubusercontent.com/logto-io/logto/HEAD/docker-compose.yml | \\\n  docker compose -p logto -f - up\n  \n  # Using Node.js (requires PostgreSQL)\n  npm init @logto\n  ```\n\n[📚 Full OSS installation guide →](https://docs.logto.io/logto-oss/get-started-with-oss?ref=readme)\n\n## Integrate anywhere\n\nLogto supports all your apps, APIs, and services with industry-standard protocols.\n\n- **SDKs for 30+ frameworks**: React, Next.js, Angular, Vue, Flutter, Go, Python, and more.\n- **Connect to any IdP**: Google, Facebook, Azure AD, Okta, and more.\n- **Flexible integration**: SPAs, web apps, mobile apps, APIs, M2M, CLI tools.\n- **Ready for Model Context Protocol and agent-based architectures**.\n\n[🚀 Explore quick starts →](https://docs.logto.io/quick-starts?ref=readme)\n\n[🔌 See all connectors →](https://docs.logto.io/integrations?ref=readme)\n\n## Showcase\n\n**Developer-first SDKs**: Install in minutes with clear guides.\n\n![Logto auth SDK showcase](./assets/showcase-logto-auth-sdks.gif)\n\n**User-friendly auth flows**: Sign-up, sign-in, social login, Google One Tap, MFA, SSO.\n\n![Logto sign-in experience showcase](./assets/showcase-logto-sign-in-exeperience.gif)\n\n**Multi-tenancy & organizations**: Organization RBAC, member invites, just-in-time provisioning, and more.\n\n![Logto multi-tenancy showcase](./assets/showcase-logto-multi-tenancy.gif)\n\n## Support Logto\n\nIf you find Logto helpful, here's how you can support us:\n\n- ⭐ **Star this repo** to show your support!\n- 💬 [Join our Discord](https://discord.gg/vRvwuwgpVX) for live discussions.\n- 📢 Share Logto on [Twitter](https://twitter.com/intent/tweet?text=Hey%20devs%21%20Need%20a%20better%20auth%20solution%3F%20Check%20out%20%40logto_io%20%E2%80%94%20it%E2%80%99s%20like%20Auth0%2FCognito%2FFirebase%20but%20open-source%2C%20modern%2C%20and%20way%20easier%20to%20use%21%20Supports%20OIDC%2C%20OAuth%202.0%2C%20SAML%2C%20and%20also%20works%20perfectly%20for%20SaaS%20apps.%20%E2%9C%A8%20https%3A%2F%2Flogto.io%20%23Auth%20%23Identity%20%23OpenSource%20%23DevTools), [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Flogto.io), [Reddit](https://reddit.com/submit?url=https%3A%2F%2Flogto.io&title=Tired%20of%20Auth0%2FCognito%2FFirebase%3F%20Logto%20is%20the%20open-source%20auth%20alternative%20you%E2%80%99ve%20been%20missing%21%20Supports%20OIDC%2C%20OAuth%202.0%2C%20SAML%2C%20and%20works%20like%20magic%20for%20modern%20apps%20and%20SaaS%20products.), [Telegram](https://t.me/share/url?url=https%3A%2F%2Flogto.io&text=Check%20out%20Logto%20%E2%80%94%20the%20better%20auth%20and%20identity%20infrastructure%21%20Open-source%2FCloud%20alternative%20to%20Auth0%2C%20Cognito%2C%20and%20Firebase.%20Supports%20all%20the%20standards%20%28OIDC%2C%20OAuth%2C%20SAML%29%20and%20is%20perfect%20for%20modern%20apps%20or%20SaaS%20products.%20https%3A%2F%2Flogto.io), [WhatsApp](https://api.whatsapp.com/send?text=Hey%21%20%F0%9F%91%8B%20Found%20this%20awesome%20auth%20tool%20called%20%2ALogto%2A%20%E2%80%94%20it%E2%80%99s%20open-source%2C%20way%20simpler%20than%20Auth0%2FCognito%2FFirebase%2C%20and%20supports%20OIDC%2FOAuth%2FSAML.%20Perfect%20for%20building%20CIAM%20system%20without%20the%20hassle.%20You%20gotta%20try%20it%3A%20https%3A%2F%2Flogto.io).\n- 🏆 Write a review or tutorial on [dev.to](https://dev.to/logto), [Medium](https://medium.com/@logto), [G2](https://www.g2.com/products/logto/reviewer_verification) or your blog.\n- 💬 [Share your use case](mailto:contact@logto.io?subject=[Share%20Logto%20User%20Story]) with us and get featured on the [Logto website](https://logto.io/).\n- 🙋 [Open an issue](https://github.com/logto-io/logto/issues/new) to report bugs or suggest features.\n- 💻 [Contribute to Logto](https://github.com/logto-io/logto/blob/master/.github/CONTRIBUTING.md) - we'd love your help! Check out [Logto awesome](https://github.com/logto-io/logto/blob/master/AWESOME.md) of community-contributed resources.\n\n## Licensing\n\n[MPL-2.0](LICENSE).\n\n<p align=\"right\">\n⬆️ <a href=\"#logto\">Back to top</a>\n</p>\n","default_branch":"master","files":7626,"tree":[".agents/skills/logto-dev-environment/SKILL.md",".agents/skills/logto-dev-environment/agents/openai.yaml",".agents/skills/logto-dev-environment/references/dev-environment-workflow.md",".agents/skills/logto-local-storage/SKILL.md",".agents/skills/logto-local-storage/references/minio-setup.md",".changeset/README.md",".changeset/anchor-date-regex.md",".changeset/config.json",".changeset/khaki-moons-repeat.md",".changeset/many-dots-drop.md",".changeset/olive-pandas-refuse.md",".changeset/release-saml-signed-authn-request.md",".changeset/shiny-curves-declare.md",".changeset/spicy-donuts-guard.md",".devcontainer/devcontainer.json",".dockerignore",".github/CODEOWNERS",".github/CONTRIBUTING.md",".github/codeql/codeql-config.yml",".github/workflows/alteration-compatibility-integration-test.yml",".github/workflows/changesets.yml",".github/workflows/close-stale.yml",".github/workflows/codeql-analysis.yml",".github/workflows/commitlint.yml",".github/workflows/integration-test.yml",".github/workflows/main.yml",".github/workflows/master-codecov-report.yml",".github/workflows/pen-tests.yml",".github/workflows/release.yml",".github/workflows/repository-dispatch.yml",".github/workflows/rerun.yml",".github/workflows/update-pr-metadata.yml",".gitignore",".gitpod.yml",".husky/commit-msg",".husky/pre-commit",".npmrc",".scripts/check-alterations-sequence.js",".scripts/compare-database.js",".scripts/compare-database.test.js",".scripts/integration/bootstrap.sh",".scripts/integration/run.sh",".scripts/merge-eslint-reports.js",".scripts/package.sh",".scripts/packages-meta.js",".scripts/publish.js",".scripts/update-parcelrc.js",".scripts/version.js",".vscode/extensions.json",".vscode/scss.code-snippets",".vscode/settings.json",".vscode/tsx.code-snippets",".zap/rules.conf","AGENTS.md","AWESOME.md","Dockerfile","Dockerfile.integration","LICENSE","README.md","assets/logto-features.png","assets/showcase-logto-auth-sdks.gif","assets/showcase-logto-multi-tenancy.gif","assets/showcase-logto-sign-in-exeperience.gif","commitlint.config.ts","docker-compose.integration.yml","docker-compose.yml","end-user-flows/consent-flow.md","end-user-flows/forgot-password-flow.md","end-user-flows/register-flow.md","end-user-flows/sign-in-flow.md","lint-staged.config.js","logo.png","package.json","packages/account/CHANGELOG.md","packages/account/README.md","packages/account/index.html","packages/account/jest.config.ts","packages/account/jest.transform.cjs","packages/account/package.json","packages/account/src/App.module.scss","packages/account/src/App.test.tsx","packages/account/src/App.tsx","packages/account/src/Callback.test.tsx","packages/account/src/Callback.tsx","packages/account/src/Providers/AccountLayoutContext.tsx","packages/account/src/Providers/AppBoundary/AppMeta.tsx","packages/account/src/Providers/AppBoundary/ErrorBoundary.tsx","packages/account/src/Providers/AppBoundary/LogtoErrorBoundary.tsx","packages/account/src/Providers/AppBoundary/index.module.scss","packages/account/src/Providers/AppBoundary/index.tsx","packages/account/src/Providers/AppBoundary/use-color-theme.ts","packages/account/src/Providers/LoadingContextProvider/LoadingContext.tsx","packages/account/src/Providers/LoadingContextProvider/index.tsx","packages/account/src/Providers/PageContextProvider/PageContext.tsx","packages/account/src/Providers/PageContextProvider/index.tsx","packages/account/src/Providers/PageContextProvider/verification-storage.ts","packages/account/src/Providers/ReauthPromptProvider/ReauthPromptContext.tsx","packages/account/src/Providers/ReauthPromptProvider/index.tsx","packages/account/src/Providers/ToastProvider/index.tsx","packages/account/src/__mocks__/RenderWithPageContext/index.tsx","packages/account/src/apis/account-center.ts","packages/account/src/apis/account.ts","packages/account/src/apis/avatar.ts","packages/account/src/apis/base-ky.ts","packages/account/src/apis/logto-config.ts","packages/account/src/apis/mfa.ts","packages/account/src/apis/phrases.ts","packages/account/src/apis/sessions.ts","packages/account/src/apis/sign-in-experience.ts","packages/account/src/apis/social.ts","packages/account/src/apis/user.ts","packages/account/src/apis/verification.ts","packages/account/src/assets/icons/delete.svg","packages/account/src/assets/icons/email.svg","packages/account/src/assets/icons/factor-backup-code.svg","packages/account/src/assets/icons/factor-totp.svg","packages/account/src/assets/icons/factor-webauthn.svg","packages/account/src/assets/icons/loading-icon.svg","packages/account/src/assets/icons/password.svg","packages/account/src/assets/icons/phone.svg","packages/account/src/assets/icons/profile.svg","packages/account/src/assets/icons/sessions.svg","packages/account/src/assets/icons/shield.svg","packages/account/src/assets/icons/success-dark.svg","packages/account/src/assets/icons/success.svg","packages/account/src/components/AccountPageHeader/index.test.tsx","packages/account/src/components/AccountPageHeader/index.tsx","packages/account/src/components/AvatarUploadField/index.module.scss","packages/account/src/components/AvatarUploadField/index.test.tsx","packages/account/src/components/AvatarUploadField/index.tsx","packages/account/src/components/Checkbox/index.module.scss","packages/account/src/components/Checkbox/index.tsx","packages/account/src/components/CodeVerification/index.module.scss","packages/account/src/components/CodeVerification/index.tsx","packages/account/src/components/ConfirmModal/index.module.scss","packages/account/src/components/ConfirmModal/index.tsx","packages/account/src/components/EmailVerification/index.tsx","packages/account/src/components/ErrorPage/index.module.scss","packages/account/src/components/ErrorPage/index.tsx","packages/account/src/components/GlobalLoading/index.module.scss","packages/account/src/components/GlobalLoading/index.tsx","packages/account/src/components/MobileTabNav/index.module.scss","packages/account/src/components/MobileTabNav/index.test.tsx","packages/account/src/components/MobileTabNav/index.tsx","packages/account/src/components/PageFooter/index.module.scss","packages/account/src/components/PageFooter/index.tsx","packages/account/src/components/PageHeader/index.module.scss","packages/account/src/components/PageHeader/index.tsx","packages/account/src/components/PasswordIdentifierInput/index.tsx","packages/account/src/components/PasswordVerification/index.module.scss","packages/account/src/components/PasswordVerification/index.tsx","packages/account/src/components/PhoneVerification/index.tsx","packages/account/src/components/SetPassword/TogglePassword.tsx","packages/account/src/components/SetPassword/index.module.scss","packages/account/src/components/SetPassword/index.tsx","packages/account/src/components/Sidebar/index.module.scss","packages/account/src/components/Sidebar/index.tsx","packages/account/src/components/SwitchVerificationMethodLink/index.module.scss","packages/account/src/components/SwitchVerificationMethodLink/index.tsx","packages/account/src/components/ToggleSwitch/index.module.scss","packages/account/src/components/ToggleSwitch/index.tsx","packages/account/src/components/VerificationMethodButton/index.module.scss","packages/account/src/components/VerificationMethodButton/index.tsx","packages/account/src/components/VerificationMethodList/index.tsx","packages/account/src/components/account-nav-items.test.ts","packages/account/src/components/account-nav-items.ts","packages/account/src/constants/env.ts","packages/account/src/constants/layout.ts","packages/account/src/constants/routes.ts","packages/account/src/hooks/use-api.ts","packages/account/src/hooks/use-error-handler.test.tsx","packages/account/src/hooks/use-error-handler.ts","packages/account/src/hooks/use-identifier-param.ts","packages/account/src/i18n/init.ts","packages/account/src/i18n/utils.phrases.test.ts","packages/account/src/i18n/utils.test.ts","packages/account/src/i18n/utils.ts","packages/account/src/include.d/i18next.d.ts","packages/account/src/include.d/vite-env.d.ts","packages/account/src/index.tsx","packages/account/src/jest.setup.ts","packages/account/src/layouts/SecondaryPageLayout/index.module.scss","packages/account/src/layouts/SecondaryPageLayout/index.tsx","packages/account/src/pages/BackupCodeBinding/index.module.scss","packages/account/src/pages/BackupCodeBinding/index.tsx","packages/account/src/pages/BackupCodeView/index.module.scss","packages/account/src/pages/BackupCodeView/index.tsx","packages/account/src/pages/CodeFlow/IdentifierBindingPage.tsx","packages/account/src/pages/CodeFlow/IdentifierSendStep.tsx","packages/account/src/pages/CodeFlow/IdentifierVerifyStep.tsx","packages/account/src/pages/CodeFlow/index.module.scss","packages/account/src/pages/Email/index.test.tsx","packages/account/src/pages/Email/index.tsx","packages/account/src/pages/Home/index.module.scss","packages/account/src/pages/Home/index.tsx","packages/account/src/pages/PasskeyBinding/index.module.scss","packages/account/src/pages/PasskeyBinding/index.tsx","packages/account/src/pages/PasskeyView/index.module.scss","packages/account/src/pages/PasskeyView/index.tsx","packages/account/src/pages/Password/index.tsx","packages/account/src/pages/Phone/index.test.tsx","packages/account/src/pages/Phone/index.tsx","packages/account/src/pages/Profile/EditProfileFieldModal.module.scss","packages/account/src/pages/Profile/EditProfileFieldModal.tsx","packages/account/src/pages/Profile/EditProfileFieldModal/DateField.module.scss","packages/account/src/pages/Profile/EditProfileFieldModal/DateField.tsx","packages/account/src/pages/Profile/EditProfileFieldModal/utils.test.ts","packages/account/src/pages/Profile/EditProfileFieldModal/utils.ts","packages/account/src/pages/Profile/EditProfileFieldModal/validation.ts","packages/account/src/pages/Profile/index.module.scss","packages/account/src/pages/Profile/index.test.tsx","packages/account/src/pages/Profile/index.tsx","packages/account/src/pages/Profile/profile-field-values.tsx","packages/account/src/pages/Profile/select-options.ts","packages/account/src/pages/Profile/types.ts","packages/account/src/pages/Security/DeleteAccountSection/index.module.scss","packages/account/src/pages/Security/DeleteAccountSection/index.tsx","packages/account/src/pages/Security/EmailPhoneSection/index.module.scss","packages/account/src/pages/Security/EmailPhoneSection/index.tsx","packages/account/src/pages/Security/MfaSection/MfaSkeleton.tsx","packages/account/src/pages/Security/MfaSection/index.module.scss","packages/account/src/pages/Security/MfaSection/index.tsx","packages/account/src/pages/Security/MfaSection/use-mfa-rows.ts","packages/account/src/pages/Security/MfaVerificationsProvider.tsx","packages/account/src/pages/Security/PasskeySection/index.module.scss","packages/account/src/pages/Security/PasskeySection/index.test.tsx","packages/account/src/pages/Security/PasskeySection/index.tsx","packages/account/src/pages/Security/PasswordSection/index.module.scss","packages/account/src/pages/Security/PasswordSection/index.tsx","packages/account/src/pages/Security/SocialSection/index.module.scss","packages/account/src/pages/Security/SocialSection/index.test.tsx","packages/account/src/pages/Security/SocialSection/index.tsx","packages/account/src/pages/Security/UsernameSection/index.module.scss","packages/account/src/pages/Security/UsernameSection/index.tsx","packages/account/src/pages/Security/components/SecurityRow.tsx","packages/account/src/pages/Security/components/SecuritySection.tsx","packages/account/src/pages/Security/components/SecuritySkeleton.tsx","packages/account/src/pages/Security/components/_skeleton.scss","packages/account/src/pages/Security/components/index.module.scss","packages/account/src/pages/Security/index.passkey.test.tsx","packages/account/src/pages/Security/index.test.tsx","packages/account/src/pages/Security/index.tsx","packages/account/src/pages/SessionExpired/index.test.tsx","packages/account/src/pages/SessionExpired/index.tsx","packages/account/src/pages/Sessions/GrantRow.tsx","packages/account/src/pages/Sessions/SessionRow.tsx","packages/account/src/pages/Sessions/index.module.scss","packages/account/src/pages/Sessions/index.tsx","packages/account/src/pages/Sessions/utils.test.ts","packages/account/src/pages/Sessions/utils.ts","packages/account/src/pages/SocialCallback/index.test.tsx","packages/account/src/pages/SocialCallback/index.tsx","packages/account/src/pages/SocialFlow/index.test.tsx","packages/account/src/pages/SocialFlow/index.tsx","packages/account/src/pages/TotpBinding/index.module.scss","packages/account/src/pages/TotpBinding/index.tsx","packages/account/src/pages/UpdateSuccess/index.test.tsx","packages/account/src/pages/UpdateSuccess/index.tsx","packages/account/src/pages/Username/index.test.tsx","packages/account/src/pages/Username/index.tsx","packages/account/src/pages/VerifiedAction/index.tsx","packages/account/src/scss/normalized.scss","packages/account/src/types/index.ts","packages/account/src/use-auth-redirect.ts","packages/account/src/utils/account-center-internal-route.test.ts","packages/account/src/utils/account-center-internal-route.ts","packages/account/src/utils/account-center-route.test.ts","packages/account/src/utils/account-center-route.ts","packages/account/src/utils/account-tabs.ts","packages/account/src/utils/date.ts","packages/account/src/utils/passkey.ts","packages/account/src/utils/profile-field-control.ts","packages/account/src/utils/security-page.passkey.test.ts","packages/account/src/utils/security-page.test.ts","packages/account/src/utils/security-page.ts","packages/account/src/utils/session-storage.test.ts","packages/account/src/utils/session-storage.ts","packages/account/src/utils/social-connector.ts","packages/account/src/utils/social-flow.ts","packages/account/src/utils/theme.ts","packages/account/tsconfig.base.json","packages/account/tsconfig.json","packages/account/vite.config.ts","packages/api/.gitignore","packages/api/CHANGELOG.md","packages/api/README.md","packages/api/check-types.sh","packages/api/docker-compose.local.yml","packages/api/generate-types.sh","packages/api/package.json","packages/api/src/client-credentials.test.ts","packages/api/src/client-credentials.ts","packages/api/src/management.test.ts","packages/api/src/management.ts","packages/api/tsconfig.build.json","packages/api/tsconfig.json","packages/app-insights/CHANGELOG.md","packages/app-insights/package.json","packages/app-insights/src/custom-event.ts","packages/app-insights/src/node.test.ts","packages/app-insights/src/node.ts","packages/app-insights/src/normalize-error.test.ts","packages/app-insights/src/normalize-error.ts","packages/app-insights/tsconfig.build.json","packages/app-insights/tsconfig.json","packages/cli/.gitignore","packages/cli/CHANGELOG.md","packages/cli/bin/logto.js","packages/cli/package.json","packages/cli/src/commands/connector/add.ts","packages/cli/src/commands/connector/index.ts","packages/cli/src/commands/connector/link.ts","packages/cli/src/commands/connector/list.ts","packages/cli/src/commands/connector/remove.ts","packages/cli/src/commands/connector/utils.ts","packages/cli/src/commands/database/alteration/index.test.ts","packages/cli/src/commands/database/alteration/index.ts","packages/cli/src/commands/database/alteration/type.ts","packages/cli/src/commands/database/alteration/utils.test.ts","packages/cli/src/commands/database/alteration/utils.ts","packages/cli/src/commands/database/alteration/version.ts","packages/cli/src/commands/database/config-rotation.test.ts","packages/cli/src/commands/database/config-rotation.ts","packages/cli/src/commands/database/config.ts","packages/cli/src/commands/database/index.ts","packages/cli/src/commands/database/seed/cloud.ts","packages/cli/src/commands/database/seed/index.ts","packages/cli/src/commands/database/seed/oidc-config.ts","packages/cli/src/commands/database/seed/options.ts","packages/cli/src/commands/database/seed/roles.ts","packages/cli/src/commands/database/seed/tables.ts","packages/cli/src/commands/database/seed/tenant-organizations.ts","packages/cli/src/commands/database/seed/tenant.ts","packages/cli/src/commands/database/system.ts","packages/cli/src/commands/database/utils.ts","packages/cli/src/commands/install/index.ts","packages/cli/src/commands/install/utils.ts","packages/cli/src/connector/consts.ts","packages/cli/src/connector/factories.ts","packages/cli/src/connector/index.ts","packages/cli/src/connector/loader.ts","packages/cli/src/connector/types.ts","packages/cli/src/connector/utils.ts","packages/cli/src/constants.ts","packages/cli/src/database.ts","packages/cli/src/index.ts","packages/cli/src/queries/database.ts","packages/cli/src/queries/logto-config.ts","packages/cli/src/queries/system.test.ts","packages/cli/src/queries/system.ts","packages/cli/src/sql.ts","packages/cli/src/test-utils.ts","packages/cli/src/utils.ts","packages/cli/tsconfig.build.json","packages/cli/tsconfig.json","packages/connectors/.gitignore","packages/connectors/README.md","packages/connectors/connector-alipay-native/CHANGELOG.md","packages/connectors/connector-alipay-native/README.md","packages/connectors/connector-alipay-native/docs/add-framework.png","packages/connectors/connector-alipay-native/logo.svg","packages/connectors/connector-alipay-native/package.json","packages/connectors/connector-alipay-native/src/constant.ts","packages/connectors/connector-alipay-native/src/index.test.ts","packages/connectors/connector-alipay-native/src/index.ts","packages/connectors/connector-alipay-native/src/mock.ts","packages/connectors/connector-alipay-native/src/types.ts","packages/connectors/connector-alipay-native/src/utils.test.ts","packages/connectors/connector-alipay-native/src/utils.ts","packages/connectors/connector-alipay-web/CHANGELOG.md","packages/connectors/connector-alipay-web/README.md","packages/connectors/connector-alipay-web/logo.svg","packages/connectors/connector-alipay-web/package.json","packages/connectors/connector-alipay-web/src/constant.ts","packages/connectors/connector-alipay-web/src/index.test.ts","packages/connectors/connector-alipay-web/src/index.ts","packages/connectors/connector-alipay-web/src/mock.ts","packages/connectors/connector-alipay-web/src/types.ts","packages/connectors/connector-alipay-web/src/utils.test.ts","packages/connectors/connector-alipay-web/src/utils.ts","packages/connectors/connector-aliyun-dm/CHANGELOG.md","packages/connectors/connector-aliyun-dm/README.md","packages/connectors/connector-aliyun-dm/logo.svg","packages/connectors/connector-aliyun-dm/package.json","packages/connectors/connector-aliyun-dm/src/constant.ts","packages/connectors/connector-aliyun-dm/src/index.test.ts","packages/connectors/connector-aliyun-dm/src/index.ts","packages/connectors/connector-aliyun-dm/src/mock.ts","packages/connectors/connector-aliyun-dm/src/single-send-mail.test.ts","packages/connectors/connector-aliyun-dm/src/single-send-mail.ts","packages/connectors/connector-aliyun-dm/src/types.test.ts","packages/connectors/connector-aliyun-dm/src/types.ts","packages/connectors/connector-aliyun-dm/src/utils.test.ts","packages/connectors/connector-aliyun-dm/src/utils.ts","packages/connectors/connector-aliyun-sms-mas/CHANGELOG.md","packages/connectors/connector-aliyun-sms-mas/README.md","packages/connectors/connector-aliyun-sms-mas/logo.svg","packages/connectors/connector-aliyun-sms-mas/package.json","packages/connectors/connector-aliyun-sms-mas/src/constant.ts","packages/connectors/connector-aliyun-sms-mas/src/index.test.ts"],"storefront":"/r/logto-io","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/logto-io/logto/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}