finds.dev

duolingo/metasearch

Search aggregator for Slack, Google Docs, GitHub, and more

View on GitHub

★ 540TypeScriptApache-2.0updated May 2026

// the take

Metasearch is Duolingo's internal tool for searching across a company's SaaS sprawl (Slack, Jira, Confluence, Google Drive, GitHub, AWS, and 20-odd others) from one search box. It's for an internal platform/IT team that wants to stop their org asking 'which tool is this doc in' and is willing to self-host and wire up API credentials for every source they care about.

- The engine abstraction (one file per source in src/engines/) is genuinely simple — each engine just needs to return a list of search results, which is why the README's claim of under 100 lines per new integration is believable from the code structure

- Breadth out of the box is real: 24+ sources means most companies won't need to write a new engine at all, just configure credentials

- Small, auditable codebase (~3000 lines of TypeScript) and a single Docker image with one volume-mounted config.yaml — this is a weekend deploy, not a project

- No access control layer: it builds one shared index across every source, so if it indexes a private Slack channel or a restricted Confluence space, anyone who can reach the Metasearch instance sees those results regardless of their actual permissions in the source tool — this matters a lot for an internal search tool

- Every credential for every connected service (AWS, Slack, Jira, GitHub, etc.) lives in one config.yaml on one box, so a single compromised instance exposes API access to your entire internal toolchain at once

- Search appears to fan out live to each configured source's API per query rather than maintaining a persistent index, which means query latency is bounded by your slowest backend (AWS tagged-resource search and Confluence are not fast APIs) and every search burns API rate limit against each connected service

- No multi-tenancy or per-team config — it's one global instance with one global source list, so separate teams with different tool access can't be segmented without running separate deployments

We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →

// at a glance

Stars
540
Forks
62
Language
TypeScript
License
Apache-2.0
Last commit
6 May 2026

// nearby

If metasearch isn't quite it.

All repos →