{"adoption": {"forks": 655, "observed_at": "2026-08-28T04:10:48.705808+00:00", "stars": 11565}, "canonical_url": "https://ross.abutalabs.com/products/kavita", "card": {"archived": false, "artifact_type": "application", "description": "Kavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family.", "domain": ["media", "self-hosted", "web-development", "files", "pdf"], "enriched": true, "function": ["http-server", "search-engine", "pdf-viewer", "image-processing", "self-hosted"], "health_score": 99, "homepage": "http://www.kavitareader.com", "language": "C#", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["Kareadita/Kavita"], "name": "Kareadita/Kavita", "platform": ["cross-platform", "windows", "self-hosted", "dotnet"], "pushed_at": "2026-08-26T20:03:36+00:00", "repo": "Kareadita/Kavita", "stars": 11565, "tags": ["reading-server", "manga", "comics", "epub", "opds", "media-server", "ebook-reader", "webtoon", "digital-library", "metadata", "linux", "macos", "docker", "web-server"], "topics": ["manga", "self-hosted", "metadata", "media-server", "free", "cross-platform", "csharp", "ubooquity", "epub", "epub-reader", "cbz", "comics-reader", "comics", "linux", "windows", "pdf", "opds", "opds-feed", "comicinfo", "annotations"], "urls": [], "use_cases": ["self-host a manga and comic library server", "read EPUB and PDF books in the browser", "share a digital reading collection with friends and family", "serve comics to mobile devices via OPDS", "organize a large ebook and manga collection with metadata and filters", "run a webtoon reader with continuous scrolling mode", "manage multiple users with age restrictions on a reading server"], "what_it_is": "Kavita is a fast, cross-platform, self-hosted reading server for manga, comics, webtoons, and ebooks (EPUB, PDF, CBZ/CBR). It provides responsive web readers, rich metadata management, user management with role-based access, OPDS support, and library organization features.", "when_to_avoid": ["you only need audiobook or music streaming (use Audiobookshelf or similar)", "you want a desktop-only reader without a server component", "you need Kavita+ features like scrobbling and external metadata without a paid subscription"], "when_to_choose": ["you want a self-hosted alternative to Ubooquity or Calibre-web for comics, manga, and books", "you need a polished web-based reader for EPUB, PDF, and image-based formats", "you want multi-user support with permissions, OIDC, and OPDS feeds", "you need rich metadata, smart filters, reading lists, and theming"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/kavita", "repo": "Kareadita/Kavita", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.705808+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:15:30.549308+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "424c05dabfeb1933d634821736fb8c2f97037e4ae4590763a86f6c0fee66c2d5", "fetched_at": "2026-08-28T04:10:48.705808+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Kareadita/Kavita"}, {"content_hash": "f99adbae92e90e746c2b84de9ebbe94596a2907700be65cadd7f624ae23e6ffc", "fetched_at": "2026-08-29T08:14:02.676890+00:00", "kind": "homepage", "missing": false, "url": "http://www.kavitareader.com"}, {"content_hash": "208e31e862911891ce5a9b41453e099eab413b35de2cdbe9cfad70e78275da44", "fetched_at": "2026-08-29T08:14:02.686383+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/getting-started"}, {"content_hash": "7f09b64c90fbf930e006e47165c1cd946da9522bbe7348a2e835322b384a72a4", "fetched_at": "2026-08-29T08:14:02.690359+00:00", "kind": "site_page", "missing": false, "url": "https://www.kavitareader.com/docs/api"}, {"content_hash": "9f42ab7b14aaf252b8bba1a6b225bdc470688498298042d2e15cd89d6d8cba0b", "fetched_at": "2026-08-29T08:14:02.688542+00:00", "kind": "site_page", "missing": false, "url": "https://wiki.kavitareader.com/kavita+"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 84}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2090, "days_push": 7, "days_rel": 111, "gap_med": 10.5, "n_releases_24m": 17}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}