{"id":36645802,"url":"https://github.com/dahkenangnon/clav.run","last_synced_at":"2026-01-12T10:00:15.127Z","repository":{"id":318729375,"uuid":"1072336638","full_name":"Dahkenangnon/clav.run","owner":"Dahkenangnon","description":"The OAuth Identity Server You Own Powered by OAuth \u0026 OIDC — written in Node + TypeScript (Node.ts).","archived":false,"fork":false,"pushed_at":"2026-01-11T17:12:40.000Z","size":8099,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-11T20:16:10.964Z","etag":null,"topics":["iam","jwks","mfa","node-oidc-provider","oauth","oauth2","openid","openid-connect","security","user-management"],"latest_commit_sha":null,"homepage":"https://clav.run","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dahkenangnon.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-08T15:23:14.000Z","updated_at":"2025-11-09T07:13:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"9cbd26c4-6b12-4d7f-a1d1-56b4073ee7a7","html_url":"https://github.com/Dahkenangnon/clav.run","commit_stats":null,"previous_names":["dahkenangnon/clav.run"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/Dahkenangnon/clav.run","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dahkenangnon%2Fclav.run","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dahkenangnon%2Fclav.run/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dahkenangnon%2Fclav.run/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dahkenangnon%2Fclav.run/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dahkenangnon","download_url":"https://codeload.github.com/Dahkenangnon/clav.run/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dahkenangnon%2Fclav.run/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28337866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iam","jwks","mfa","node-oidc-provider","oauth","oauth2","openid","openid-connect","security","user-management"],"created_at":"2026-01-12T10:00:14.862Z","updated_at":"2026-01-12T10:00:15.095Z","avatar_url":"https://github.com/Dahkenangnon.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://clav.run\"\u003e🌐 Website\u003c/a\u003e •\n\u003ca href=\"https://clav.run/docs\"\u003e📚 Documentation\u003c/a\u003e •\n\u003ca href=\"https://github.com/Dahkenangnon/clav.run\"\u003e💻 GitHub\u003c/a\u003e •\n\u003ca href=\"./readme.fr.md\"\u003e🇫🇷 Français\u003c/a\u003e\n\n\u003cbr /\u003e\n\n\u003cimg src=\"./public/images/logo-light.svg\" alt=\"Clav.run Logo\" width=\"300\" /\u003e\n\n# Clav.run\n\n\u003cstrong\u003eOwn Your Users • Zero Per-User Costs • Deploy in 3 Minutes • Secure Everything\u003c/strong\u003e\n\n\u003cbr /\u003e\n\n\u003c!-- Essential Tools --\u003e\n\u003ca href=\"https://github.com/semantic-release/semantic-release\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/semantic--release-100000?style=for-the-badge\u0026logo=semantic-release\u0026logoColor=white\u0026labelColor=494949\" alt=\"Semantic Release\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://eslint.org/\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/ESLint-100000?style=for-the-badge\u0026logo=eslint\u0026logoColor=white\u0026labelColor=494949\" alt=\"ESLint\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://vitest.dev/\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/vitest-100000?style=for-the-badge\u0026logo=vitest\u0026logoColor=white\u0026labelColor=494949\" alt=\"Vitest\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/commitizen/cz-cli\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/commitizen-100000?style=for-the-badge\u0026logo=commitizen\u0026logoColor=white\u0026labelColor=494949\" alt=\"Commitizen\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://commitlint.js.org/\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/commitlint-100000?style=for-the-badge\u0026logo=commitlint\u0026logoColor=white\u0026labelColor=494949\" alt=\"Commitlint\" /\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\u003csmall\u003eSecurity concerns? Contact us at \u003ca href=\"mailto:hi@claviscore.com\"\u003ejustin@claviscore.com\u003c/a\u003e • \u003ca href=\"./SECURITY.md\"\u003eView Security Policy\u003c/a\u003e\u003c/small\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n**Stop paying per user!** Clav.run is the **self-hosted identity server** that puts you in control. Deploy in **1-2-3 minutes** on any VPS or cloud, scale infinitely, and authenticate users with **any method** - passwords, biometrics, WebAuthn, MFA, or passwordless. Works in low-bandwidth zones, supports multiple accounts, and costs **zero per user**. 🚀\n\nBuilt on the OpenID Certified™ [node-oidc-provider](https://github.com/panva/node-oidc-provider) library, delivering full OAuth 2.0 [(RFC 6749)](https://www.rfc-editor.org/rfc/rfc6749.html) and [OIDC](https://openid.net/connect/) compliance with advanced standards support.\n\n\u003e ⚠️ **Note**: While using the certified library, Clav.run itself has not undergone OpenID Foundation certification.\n\n---\n\n## ✨ Key Features\n\n- **👥 Multi-Account Sessions** – Seamlessly switch between identities\n- **🎯 Native `select_account` Prompt** – Simplifies account chooser UX\n- **🌐 Federation Support** – Connect with external identity providers\n- **⚡ Scalable \u0026 Performant** – Cluster-ready for high-load use cases\n- **📱 Clean UI** – Accessible, responsive login and consent flows\n- **🔒 MFA Support** – TOTP + email-based 2FA out-of-the-box\n- **📊 Audit Logging** – Track activity and session lifecycle\n\n📄 See the full [changelog](./changelog.md) • 🗺️ Check out our [roadmap](./ROADMAP.md)\n\n---\n\n## 🎯 Use Cases\n\n| Persona                | Benefits                                                        |\n| ---------------------- | --------------------------------------------------------------- |\n| **🚀 Startups**        | Fast to deploy, minimal complexity                              |\n| **👨‍💼 Solopreneurs**    | Zero recurring costs, full control over identity stack          |\n| **🏢 SMBs**            | Centralized login across internal or client-facing apps         |\n| **🔧 Developers**      | Flexible API, prebuilt flows, modern CLI                        |\n| **📱 Multi-App Teams** | Full SSO and account linking across multiple tools and projects |\n\n---\n\n## 🆚 Why Choose Clav.run?\n\n| Feature              | Clav.run        | Enterprise Solutions | Raw Library     |\n| -------------------- | --------------- | -------------------- | --------------- |\n| **Setup Time**       | 🚀 Minutes      | ⏱️ Weeks             | 🛠️ Manual Setup |\n| **UI Included**      | ✅ Complete     | ✅ Enterprise UI     | ❌ No           |\n| **Self-Hosted**      | ✅ Fully        | ❌ Cloud/Hybrid      | ✅ Yes          |\n| **Cost**             | 💰 Free         | 💸 Expensive         | 💰 Free         |\n| **OpenID Certified** | ⚠️ Library Only | ✅ Full              | ✅ Full         |\n\nEnhanced library with complete UI and streamlined setup.\n\n---\n\n## 🚀 Quick Start\n\n### 🔒 Option 1: Use Production Release (Recommended)\n\n```bash\n# Download the latest release\nwget https://github.com/Dahkenangnon/clav.run/releases/latest/download/clav-run-v*.tar.gz\ntar -xzf clav-run-v*.tar.gz \u0026\u0026 cd clav-run-release\n\n# System check \u0026 setup\nyarn clav requirements\nyarn clav setup\n\n# Stay up-to-date\nyarn update latest\n```\n\n### 🛠️ Option 2: Run from Source\n\n```bash\ngit clone https://github.com/Dahkenangnon/clav.run.git\ncd clav.run\nyarn install\n\nyarn clav requirements\nyarn clav setup\nyarn jwks generate\n\nyarn dev\n```\n\n📍 Visit [`http://localhost:9007`](http://localhost:9007) to get started.\n\n---\n\n## 🛠️ CLI Overview\n\n```bash\n# General\nyarn clav requirements              # Check prerequisites\nyarn clav setup                     # Interactive setup\nyarn clav config validate           # Validate current config\nyarn clav config set \u003ckey\u003e \u003cvalue\u003e # Set a config key\n\n# OIDC Clients\nyarn clav client add                # Add a new client\nyarn clav client list               # List registered clients\n\n# Keys\nyarn jwks generate                  # Generate new JWKS\nyarn jwks quick                     # Quick key generation\n\n# Updates\nyarn update latest                  # Update to latest version\nyarn update list                    # View all available versions\nyarn update --target 1.0.0          # Update to specific version\nyarn update --interactive           # Interactive mode\n\n# Server\nyarn start                          # Start dev server\nyarn restart                        # Restart via PM2\n```\n\n---\n\n## 📦 Deployment\n\n### Using PM2\n\n```bash\n# Start in production mode\npm2 start ecosystem.config.cjs --env production\n\n# Or in development mode\npm2 start ecosystem.config.cjs --env development\n```\n\n---\n\n## 🆘 Support \u0026 License\n\n- 🛡 **Security Issues**: [justin@claviscore.com](mailto:justin@claviscore.com)\n- 📚 **Documentation**: [https://clav.run/docs](https://clav.run/docs)\n- 📄 **License**: MIT License - see [LICENSE](./LICENSE)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003eClav.run – Identity in Motion\u003c/h3\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://prettier.io/\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/prettier-100000?style=for-the-badge\u0026logo=prettier\u0026logoColor=white\u0026labelColor=494949\" alt=\"Prettier\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/conventional-changelog/conventional-changelog\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/conventional--changelog-100000?style=for-the-badge\u0026logo=conventional-changelog\u0026logoColor=white\u0026labelColor=494949\" alt=\"Conventional Changelog\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/typicode/husky\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/husky-100000?style=for-the-badge\u0026logo=husky\u0026logoColor=white\u0026labelColor=494949\" alt=\"Husky\" /\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdahkenangnon%2Fclav.run","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdahkenangnon%2Fclav.run","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdahkenangnon%2Fclav.run/lists"}