{"adoption": {"forks": 606, "observed_at": "2026-08-28T04:09:56.531114+00:00", "stars": 7196}, "canonical_url": "https://ross.abutalabs.com/products/rikkahub", "card": {"archived": false, "artifact_type": "application", "description": "RikkaHub is an Android APP that supports for multiple LLM providers.", "domain": ["artificial-intelligence", "large-language-models", "chatbots", "mobile-development"], "enriched": true, "function": ["chatbot", "chat-interface", "agent-framework", "mcp", "llm-inference", "search-engine", "markdown"], "health_score": 100, "homepage": "https://rikka-ai.com", "language": "Kotlin", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["rikkahub/rikkahub"], "name": "rikkahub/rikkahub", "platform": ["jvm"], "pushed_at": "2026-08-26T14:30:35+00:00", "repo": "rikkahub/rikkahub", "stars": 7196, "tags": ["llm-chat-client", "jetpack-compose", "material-you", "multi-provider", "openai-compatible", "proot-linux", "message-branching", "web-search-augmented", "ai-agents", "android", "mobile"], "topics": ["android", "jetpack-compose", "chatgpt", "deepseek", "llm-ui", "openrouter", "app", "gemini", "chatbox", "mcp", "chatbot-ui", "web-ui", "agent"], "urls": [], "use_cases": ["chat with GPT, Gemini, Claude, and DeepSeek from one Android app", "switch between multiple LLM providers without changing apps", "bring your own API key for OpenAI-compatible endpoints", "run an AI agent with a Linux workspace on my phone", "use MCP tools with a mobile chatbot", "give the AI real-time web search results", "branch a conversation to explore alternative replies", "use a privacy-respecting open-source ChatGPT alternative on Android"], "what_it_is": "RikkaHub is a native Android LLM chat client built with Kotlin and Jetpack Compose that supports switching between multiple AI providers such as OpenAI, Google, Anthropic, DeepSeek, and OpenRouter. It includes agent features like an MCP-based tool calling, a proot-based Linux workspace, web search augmentation, memory, message branching, and a companion web UI.", "when_to_avoid": ["you need an iOS, desktop, or first-class web-only client", "you want fully local on-device model inference rather than API-based providers", "you require a non-AGPL license for derivative distribution"], "when_to_choose": ["you want a native, open-source Android client for multiple LLM providers with your own API keys", "you need MCP tool calling or an on-device Linux agent workspace", "you value Material You design, dark mode, and features like message branching and memory"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rikkahub", "repo": "rikkahub/rikkahub", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "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:09:56.531114+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:56.531114+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:39:52.931305+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "246e4768e250bd60ea78c59e2dc35c95980ba9ccdc6a1ca115714d62fc8adba7", "fetched_at": "2026-08-28T04:09:56.531114+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rikkahub/rikkahub"}, {"content_hash": "5d7e724fb830dc08d68dc6cc7735736dac28b44dcbce86f64b0e7f5235455d86", "fetched_at": "2026-08-29T08:34:57.465214+00:00", "kind": "homepage", "missing": false, "url": "https://rikka-ai.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 38, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 540, "days_push": 7, "days_rel": 7, "gap_med": 1.0, "n_releases_24m": 169}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}