{"id":"cfdb0890-cbe7-4390-9f83-8e86f19cf6ea","entityType":"agent","slug":"crewai-rakibhasan221b-ai-travel-assistant-denmark","name":"AI-Travel-Assistant-Denmark","canonicalUrl":"https://www.xpersona.co/agent/crewai-rakibhasan221b-ai-travel-assistant-denmark","canonicalPath":"/agent/crewai-rakibhasan221b-ai-travel-assistant-denmark","generatedAt":"2026-10-10T05:02:02.636Z","source":"GITHUB_REPOS","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T03:24:46.784Z","emptyReason":null},"description":"AI-powered Copenhagen trip planner : FastAPI + Postgres/pgvector + XGBoost + CrewAI agents + Next.js, built and deployed solo on free-tier infra. AI Denmark Explorer An AI-powered place-discovery app for Copenhagen, built, deployed, and debugged solo, entirely on free-tier infrastructure. It's also a full-stack AI/ML case study: SQL, embeddings, RAG, multi-agent orchestration, classical ML, and a React/Next.js frontend, all shipped end to end, not just prototyped. **$1** · **$1** What it does - **Explore**: semantic (\"vibe\") search over 1,897 real Copenhagen p","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 10/9/2026.","installCommand":null,"sourceUrl":"https://github.com/RakibHasan221b/AI-Travel-Assistant-Denmark","homepage":null,"primaryLinks":[{"label":"View Source","url":"https://github.com/RakibHasan221b/AI-Travel-Assistant-Denmark","kind":"source"}],"safetyScore":66,"overallRank":22.8,"popularityScore":8,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"AI-powered Copenhagen trip planner : FastAPI + Postgres/pgvector + XGBoost + CrewAI agents + Next.js, built and deployed solo on free-tier infra. AI Denmark Exp"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:24:46.784Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[{"label":"crewai","status":"self-declared"},{"label":"multi-agent","status":"self-declared"}],"verifiedCount":0,"selfDeclaredCount":3,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"},{"key":"crewai","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"},{"key":"multi-agent","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"}},"adoption":{"evidence":{"source":"GITHUB REPOS","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:24:46.784Z","emptyReason":null},"stars":1,"forks":0,"downloads":null,"packageName":null,"latestVersion":null,"tractionLabel":"1 GitHub stars"},"release":{"evidence":{"source":"agent-index","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:24:46.778Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T03:24:46.784Z","lastCrawledAt":"2026-10-09T03:24:46.778Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-16T03:24:46.778Z","lastVerifiedAt":null,"highlights":[]},"execution":{"evidence":{"source":"GITHUB REPOS","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":null,"setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"GITHUB_REPOS","generatedAt":"2026-10-10T05:02:02.636Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-rakibhasan221b-ai-travel-assistant-denmark/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"GITHUB REPOS","verified":false,"confidence":"high","updatedAt":"2026-10-09T03:24:46.784Z","emptyReason":null},"readme":"# AI Denmark Explorer\n\nAn AI-powered place-discovery app for Copenhagen, built, deployed, and\ndebugged solo, entirely on free-tier infrastructure.\n\nIt's also a full-stack AI/ML case study: SQL, embeddings, RAG, multi-agent\norchestration, classical ML, and a React/Next.js frontend, all shipped\nend to end, not just prototyped.\n\n**[Live app](https://ai-denmark-explorer.vercel.app/)** ·\n**[Live API](https://ai-denmark-explorer-api.onrender.com/health)**\n\n## What it does\n\n- **Explore**: semantic (\"vibe\") search over 1,897 real Copenhagen places (restaurants, cafes, hotels, landmarks), each with a predicted quality score, a named vibe cluster, and an AI-grounded summary with cited sources.\n- **Trip Planner**: two [CrewAI](https://www.crewai.com/) agents (Intent Analyst, Concierge) plan a real, honest trip recommendation, grounded in real weather and real place data, never inventing a fact it can't cite.\n  - The Intent Analyst turns free text into a validated structured spec (Pydantic + `instructor`); a plain backend function decides how each part gets searched (near/far/sequential/area), so the LLM reasons about intent but never about spatial routing.\n  - Every recommended place carries a live `recommendation_confidence` score (XGBoost), computed fresh from real review text on every request, never a stale stored number.\n  - A live-lookup fallback (Nominatim, then Serper) honestly flags any place outside the curated dataset instead of pretending it has the same evidence behind it.\n  - Repeat and near-repeat requests are served from a database-backed cache instead of re-running the agents.\n- **Stats Dashboard**: real aggregate SQL analytics (`GROUP BY`/`FILTER`), computed live from Postgres on every request (not pre-baked at build time), rendered as charts, plus a Model Evaluation section reporting the recommendation model's real backtested correlation against actual outcomes.\n\n## Architecture\n\n![AI Denmark Explorer architecture diagram](docs/images/architecture.png)\n\nOne request pipeline, six steps: a natural-language request becomes a\nvalidated structured intent, gets routed and searched deterministically,\nranked by a real ML model, and answered with a grounded response. The LLM\nreasons about what the traveler means, never about where to search or\nwhat's true.\n\n**Request flow**: Natural Language Request → Structured Intent → Validated\nSchema → Deterministic Routing → Search + ML Ranking → Grounded Response.\n\n**Data.** Real Copenhagen places (1,897 and counting) come from\nOpenStreetMap, bulk-loaded via `osmium` and enriched on-demand through\nNominatim. Wikipedia/Wikivoyage supply place descriptions; Serper (web\nsearch) fills in the rest for places with thin data, with every candidate\nindependently re-verified before it's trusted. Every incoming record is\nvalidated with Pydantic and neighborhood-matched via real point-in-polygon\ngeometry (Shapely) against official Danish district boundaries, not a\nslow, rate-limited geocoding API.\n\n**Search & database.** PostgreSQL (Neon, scale-to-zero) with pgvector\nstores every place and its embedding (`all-MiniLM-L6-v2`). Semantic search\nretrieves by meaning, then a reranking layer combines that similarity with\nreal lexical name-matching so an exact-name query doesn't get buried under\ntopically-similar decoys. Spatial relationships (near an anchor, far from\nit, a sequence, a neighborhood constraint) are resolved by explicit\nbackend routing, never inferred by the LLM.\n\n**Machine learning.** A `recommendation_confidence` score is computed live\nfor every recommended place: DistilBERT's offline-precomputed sentiment\nreading and a freshly-computed MiniLM semantic-nuance signal both feed a\ntrained XGBoost classifier. Backtested against real outcomes at Pearson\nr = 0.713, more than 4x the correlation of the quality-score model it\nreplaced in this path (r = 0.171). Optuna tunes hyperparameters; a\nseparate, Explore-only XGBoost model still handles the original\nquality-score ranking task.\n\n**Generative AI.** Two CrewAI agents. The Intent Analyst (OpenAI\n`gpt-4o-mini`) turns free text into a validated structured spec; it has\nno database tools at all. The Concierge (OpenAI `gpt-4o`) narrates the\nfinal answer from real retrieved data, with an explicit guard against\nclaiming proximity or facts the pipeline didn't actually establish.\nLangChain runs the separate RAG-summary pipeline that produces Explore's\ncited place summaries.\n\n**Live services.** Open-Meteo (real weather for the actual requested date,\nnot a fixed lookup table), Serper (evidence search), and Nominatim (live\nplace lookup) run alongside the main search path, each with its own\nhonest fallback if it comes back empty.\n\n**Application layer.** FastAPI backend on Render, Next.js/React/TypeScript\nfrontend on Vercel, calling the API directly from the browser.\n\n**Quality.** 144 automated tests, GitHub Actions CI, `ruff` linting.\n\n## Key results\n\n| Model | Result |\n|---|---|\n| Recommendation confidence (XGBoost classifier, live per-request) | Powers the Trip Planner. Backtested against real outcomes: Pearson r = 0.713, vs r = 0.171 for the quality-score model it replaced in that path (same evaluation methodology, run on the same real places) |\n| Quality-score prediction (XGBoost, Optuna-tuned) | Still powers Explore's ranking. 83% of predictions within ±10 points of the true score (RMSE 8.76, R² 0.12 on 172 labeled examples, honestly reported, not inflated) |\n| Weather-aware visit forecast (XGBoost, chronological split) | 97% within ±10 points (RMSE 3.39, R² 0.98) |\n| RAG-summary prompt A/B test | Ran live on real places (20 GPT-4o generations, $0.027 total) with a deterministic scorer; no second LLM call needed to judge the first |\n\n## Hardened by real use\n\nThis wasn't verified once and shipped; it was built, then actually used,\nand using it surfaced real problems that got root-caused with evidence and\nfixed at the architecture level, not patched over:\n\n- **A real LLM reliability bug became a deterministic-routing redesign.** Live testing found that a bare sequence word like \"then\" (as in \"...and then grab coffee\") could get misread as a spatial-relationship marker, sending the agent searching \"near\" a place that was never meant as an anchor. Rather than patching the prompt again, spatial routing was moved out of the LLM entirely: a validated backend function now decides near/far/sequential/area deterministically, so the model reasons about intent and never about where to search.\n- **Even that deterministic \"near\" search had a real relevance bug.** Asking for \"a sushi place near the Little Mermaid\" silently returned the closest restaurant of any kind, Italian included, because `near` ranked candidates by distance alone and nothing ever read what was actually being asked for. Rather than hardcoding a cuisine list, which can never cover what a user might type next, the fix reused the same semantic-relevance ranking Explore already had: the traveler's own wording is now scored against every nearby candidate, and if genuinely nothing matches, the app says so honestly and falls back to a live search instead of quietly substituting something else. Verified with 8 new regression tests and real before/after checks against the live database.\n- **Four separate production failures, each root-caused to a specific line, not blamed on the framework.** Getting this live on a free-tier host surfaced a Python-version/build-sandbox mismatch, a missing transitive dependency only exposed by a narrower install, an out-of-memory kill traced to one specific import, and a CI dependency gap.\n- **A famous landmark returned zero search results, in production.** The Little Mermaid statue's only stored text was a bare Danish OSM tag, traced to rank 701 out of 1,896 in semantic search. Fixed with a web-enrichment pipeline; verified the fix moved it to rank 1.\n- **Every place in the database was missing its neighborhood.** `addr:suburb` is rarely set on individual OSM points. Fixed with real point-in-polygon matching against official Danish district boundaries (opendata.dk + DAWA) instead of a slow, rate-limited API; 99.9% matched in 36 seconds.\n\n## Tech stack\n\n| Tool | Category | What it does here |\n|---|---|---|\n| PostgreSQL (Neon) | Data | Primary database, scale-to-zero free tier |\n| pgvector | Data | Vector similarity search, in the same SQL query as structured filters |\n| OpenStreetMap | Data | Source of every real place record (1,897 and counting) |\n| osmium | Data | Bulk OSM extraction for the initial load |\n| Nominatim | Data | Live geocoding and single-place lookup |\n| Wikivoyage / Wikipedia | Data | Place descriptions |\n| opendata.dk / DAWA | Data | Official Danish district boundaries for neighborhood matching |\n| Shapely | Data | Point-in-polygon neighborhood matching against those boundaries |\n| Serper | Data / Agents | Web-search fallback for thin-data places, independently re-verified before trusting |\n| scikit-learn | ML | Unsupervised clustering, cross-validation |\n| XGBoost | ML | Quality-score and recommendation-confidence classifiers |\n| Optuna | ML | Hyperparameter tuning |\n| MLflow | ML | Experiment tracking |\n| sentence-transformers / fastembed | ML | `all-MiniLM-L6-v2` embeddings, semantic search + recommendation signal |\n| DistilBERT | ML | Offline sentiment scoring (`transformers`), feeds the recommendation classifier |\n| GPT-4o | Agents | Concierge narration and RAG-summary generation |\n| GPT-4o-mini | Agents | Intent Analyst's structured-intent extraction |\n| CrewAI | Agents | Multi-agent orchestration (Intent Analyst, Concierge) |\n| Pydantic + `instructor` | Agents | Validated structured-intent extraction from free text |\n| LangChain | Agents | RAG retrieval chain behind Explore's cited place summaries |\n| Open-Meteo | Live services | Real weather for the actual requested date, archive + forecast |\n| FastAPI | Backend | API framework, deployed on Render |\n| React / Next.js | Frontend | App Router, Server + Client Components, deployed on Vercel |\n| TypeScript | Frontend | Type safety across the frontend |\n| Tailwind CSS | Frontend | Styling |\n| Recharts | Frontend | Stats Dashboard charts |\n| pytest | Quality | 144 automated tests |\n| ruff | Quality | Linting |\n| GitHub Actions | Quality | CI on every push |\n\n## Setup\n\n```bash\npython -m venv .venv\n.venv\\Scripts\\activate   # Windows\npip install -e \".[dev]\"\ncp .env.example .env     # fill in DATABASE_URL, OPENAI_API_KEY\npsql $DATABASE_URL -f db/schema.sql\npytest\n```\n\n### The `agent` extra: use a short-path venv on Windows\n\n`pip install -e \".[dev,embeddings,rag,agent]\"` pulls in `crewai`, which\ndepends on `torch`, and torch's own bundled license files are nested deep\nenough that combined with a long project path (e.g.\n`...\\deeply\\nested\\parent\\folder\\ai-denmark-explorer\\.venv\\...`), the\ninstall can hit Windows' 260-character path limit. If that happens, create\nthe venv at a\nshort path outside the project instead, e.g.:\n\n```bash\npython -m venv C:\\Users\\<you>\\.venvs\\ade\nC:\\Users\\<you>\\.venvs\\ade\\Scripts\\python.exe -m pip install -e \".[dev,embeddings,rag,agent]\"\n```\n\nAlso install this extra in its own venv, not one shared with other\nprojects; `crewai` requires `langchain-core>=1.0`, which conflicts with the\n`langchain 0.3.x` pin used elsewhere on the same machine.\n\nRun the API: `uvicorn api.main:app --port 8000`, then\n`POST /trip-plan {\"request\": \"...\", \"target_date\": \"YYYY-MM-DD\", \"start_location\": \"...\"}`.\n\n### Frontend (React/Next.js)\n\n```bash\ncd web\nnpm install\ncp .env.local.example .env.local   # NEXT_PUBLIC_TRIP_PLANNER_API_URL, defaults to localhost:8000\nnpm run dev\n```\n\nRequires the API above running locally (or point `.env.local` at the live\nRender URL). `npm run build` runs the same TypeScript/Next.js checks CI and\nVercel both run.\n\n## Scope\n\nCopenhagen only for now. Architecture is designed to extend to other Danish\ncities later, not built to require it from day one.\n","readmeExcerpt":"AI Denmark Explorer An AI-powered place-discovery app for Copenhagen, built, deployed, and debugged solo, entirely on free-tier infrastructure. It's also a full-stack AI/ML case study: SQL, embeddings, RAG, multi-agent orchestration, classical ML, and a React/Next.js frontend, all shipped end to end, not just prototyped. **$1** · **$1** What it does - **Explore**: semantic (\"vibe\") search over 1,897 real Copenhagen p","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python -m venv .venv\n.venv\\Scripts\\activate   # Windows\npip install -e \".[dev]\"\ncp .env.example .env     # fill in DATABASE_URL, OPENAI_API_KEY\npsql $DATABASE_URL -f db/schema.sql\npytest"},{"language":"bash","snippet":"python -m venv C:\\Users\\<you>\\.venvs\\ade\nC:\\Users\\<you>\\.venvs\\ade\\Scripts\\python.exe -m pip install -e \".[dev,embeddings,rag,agent]\""},{"language":"bash","snippet":"cd web\nnpm install\ncp .env.local.example .env.local   # NEXT_PUBLIC_TRIP_PLANNER_API_URL, defaults to localhost:8000\nnpm run dev"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[],"languages":["python"],"docsSourceLabel":"GITHUB REPOS","editorialOverview":"AI-powered Copenhagen trip planner : FastAPI + Postgres/pgvector + XGBoost + CrewAI agents + Next.js, built and deployed solo on free-tier infra. AI Denmark Explorer An AI-powered place-discovery app for Copenhagen, built, deployed, and debugged solo, entirely on free-tier infrastructure. It's also a full-stack AI/ML case study: SQL, embeddings, RAG, multi-agent orchestration, classical ML, and a React/Next.js frontend, all shipped end to end, not just prototyped. **$1** · **$1** What it does - **Explore**: semantic (\"vibe\") search over 1,897 real Copenhagen p","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":407,"uniquenessScore":65,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T03:24:46.784Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T03:24:46.784Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:02:02.636Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/github_repos","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}