{"id":50545173,"url":"https://github.com/ivpn/unlinked-access","last_synced_at":"2026-06-03T23:01:42.776Z","repository":{"id":356296235,"uuid":"971274718","full_name":"ivpn/unlinked-access","owner":"ivpn","description":"Unlinked Access: Privacy-preserving cross-application authorization","archived":false,"fork":false,"pushed_at":"2026-05-31T07:16:49.000Z","size":483,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-31T08:14:34.817Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ivpn.net","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ivpn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/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":"CLA.md"}},"created_at":"2025-04-23T09:19:02.000Z","updated_at":"2026-05-12T12:32:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ivpn/unlinked-access","commit_stats":null,"previous_names":["ivpn/unlinked-access"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/ivpn/unlinked-access","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivpn%2Funlinked-access","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivpn%2Funlinked-access/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivpn%2Funlinked-access/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivpn%2Funlinked-access/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivpn","download_url":"https://codeload.github.com/ivpn/unlinked-access/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivpn%2Funlinked-access/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33883102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-03T23:01:41.677Z","updated_at":"2026-06-03T23:01:42.770Z","avatar_url":"https://github.com/ivpn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unlinked Access\nPrivacy-preserving cross-application authorization  \n\n## Services\n\n### Token Generation Service (server)\n`token`\n\nThe Token Generation Service is responsible for creating secure, non-linkable tokens that allow IVPN users to authenticate with MailX without revealing their identity. This component interfaces directly with the Hardware Security Module (HSM) to ensure that the cryptographic operations remain secure and tamper-resistant.\n\n### Manifest Generation Service (server)\n`generator`\n\nThe Manifest Generation Service creates comprehensive, signed lists of all valid tokens along with their associated subscription properties. These manifests serve as the authoritative source of subscription information for MailX and other applications.\n\n### Manifest Distribution Service (server)\n`distributor`\n\nThe Manifest Distribution System securely delivers manifests to authorized applications. It ensures that only legitimate applications can access the manifest while optimizing distribution for performance and reliability.\n\n### Pre-Authorization Service (server)\n`preauth`\n\nThe Pre-Authorization API provides immediate verification for new user signups, ensuring that users can access MailX instantly after signup rather than waiting for the next manifest update.\n\n### Token Verification Service (client)\n`verifier`\n\nThe Token Verification Library is integrated into MailX to verify tokens and manage user subscription states based on the information in the manifest. It handles the complexities of token validation without requiring direct communication with IVPN for routine operations.\n\n## Installation\n\n### Prerequisites\n\n- [Docker](https://docs.docker.com/get-docker/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n\n### Usage\n1. Clone the repo: `git clone \u003crepo-url\u003e \u0026\u0026 cd \u003crepo-dir\u003e`\n2. Create and configure `.env`: `cp .env.sample .env`\n3. Start services: `docker compose up -d`\n4. View logs: `docker compose logs -f`\n5. Stop services: `docker compose down`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivpn%2Funlinked-access","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivpn%2Funlinked-access","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivpn%2Funlinked-access/lists"}