selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Limelit Open logo

Self-host Limelit Open

v0.1.0-rc.14

Self-hosted AI visibility tracking for AEO, GEO, and LLMO

BetaOpen SourceApache-2.0
Updated6 days ago
LanguageGo
Setup difficultyModerate
Stars
223
Port
1515 (HTTP dashboard, JSON API, MCP over HTTP)
Docker
ghcr.io/limelit-co/open
Install with Docker
The race: every tracked brand's visibility by day with hover card for measured dayVisibility by engine: every brand as a dot on a shared 0 to 100 track, one row per engineShare of voice donut with the seven leading brands named and the rest groupedEvery prompt, every engine: a grid of fractions, worst prompts first, each cell a link to the answers behind itWhere you stand: every tracked brand ranked by how often it is named, with share of voice and average positionWho gets cited: one 100 percent stacked bar per measured day, split by source type, your share printed above eachTop cited sites, each classified as own, competitor, social, informational or other

What is Limelit Open?

Limelit Open is a self-hosted platform that tracks how AI answer engines mention and cite your brand compared to competitors. It covers seven engines using both official APIs and scraped consumer interfaces. The software runs as a single Go binary with an embedded SQLite database, provides a web dashboard on port 1515, and includes an MCP server so AI assistants can query the visibility data. Users bring their own API keys for providers like OpenAI, Anthropic, Perplexity, Google, OpenRouter, DataForSEO, SearchAPI, Cloro, BrightData, Oxylabs, and Olostep, paying those providers directly. Key features include visibility tracking, share of voice, citation analysis, a prompt-by-engine grid, query fan-out capture, scheduling, data export, and a one-command upgrade to the managed Limelit Cloud service. The project is in pre-release (v0.1) under the Apache-2.0 license.

Should you self-host Limelit Open?

Limelit Open scores 45/100 on selfhost.directory (how scoring works) and ranks #74 of 125 in AI. It has 223 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Apache-2.0-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is Elmo (52/100, 517 stars). It scores higher overall, so compare the two before you pick. See Limelit Open vs Elmo side by side.

Features

  • Citation analysis
  • Embedded dashboard
  • Evaluation runner
  • Export
  • Hybrid providers5 of 11 providers not yet built
  • MCP Server
  • One-command upgrade
  • Prompt by engine grid
  • Query fan-out capture
  • Scheduler
  • Setup Wizard
  • Share of voice
  • Single binary with SQLite
  • Visibility tracking

Limelit Open README

How to install Limelit Open

Install Limelit Open with Docker

Docker
Environment variables
LIMELIT_DATA_DIR, LIMELIT_SECRET, LIMELIT_MCP_TOKEN, LIMELIT_DEMO, and provider API keys

docker run -p 1515:1515 -v limelit:/data ghcr.io/limelit-co/open

Database lives in the limelit volume

How to configure Limelit Open

  • ANTHROPIC_API_KEYAnthropic API key for Claude engine

    Anthropic API key for Claude engine

    values: valid Anthropic API key

  • BRIGHTDATA_API_TOKENBrightData API token for scraped provider

    BrightData API token for scraped provider

    values: valid BrightData API token

  • CLORO_API_KEYCloro API key for scraped provider

    Cloro API key for scraped provider

    values: valid Cloro API key

  • DATAFORSEO_LOGINDataForSEO login for scraped Google AI surfaces

    DataForSEO login for scraped Google AI surfaces

    values: valid DataForSEO login

  • DATAFORSEO_PASSWORDDataForSEO password for scraped Google AI surfaces

    DataForSEO password for scraped Google AI surfaces

    values: valid DataForSEO password

  • GOOGLE_API_KEYGoogle API key for Gemini engine

    Google API key for Gemini engine

    values: valid Google API key

  • LIMELIT_DATA_DIR./dataSets where the SQLite database lives

    Sets where the SQLite database lives

    values: any valid path

  • LIMELIT_DEMOSet to 1 to run as read-only public demo instance

    Set to 1 to run as read-only public demo instance

    values: 1

  • LIMELIT_MCP_TOKENBearer token for MCP HTTP endpoint, wins over generated token

    Bearer token for MCP HTTP endpoint, wins over generated token

    values: any string

  • LIMELIT_SECRETgenerated beside the databaseKey that encrypts credentials pasted into the dashboard

    Key that encrypts credentials pasted into the dashboard

    values: any string

  • OLOSTEP_API_KEYOlostep API key for scraped provider

    Olostep API key for scraped provider

    values: valid Olostep API key

  • OPENAI_API_KEYOpenAI API key for ChatGPT engine

    OpenAI API key for ChatGPT engine

    values: valid OpenAI API key

  • OPENROUTER_API_KEYOpenRouter API key for OpenRouter provider

    OpenRouter API key for OpenRouter provider

    values: valid OpenRouter API key

  • OXYLABS_PASSWORDOxylabs password for scraped provider

    Oxylabs password for scraped provider

    values: valid Oxylabs password

  • OXYLABS_USERNAMEOxylabs username for scraped provider

    Oxylabs username for scraped provider

    values: valid Oxylabs username

  • PERPLEXITY_API_KEYPerplexity API key for Perplexity engine

    Perplexity API key for Perplexity engine

    values: valid Perplexity API key

  • SEARCHAPI_KEYSearchAPI key for scraped Bing Copilot

    SearchAPI key for scraped Bing Copilot

    values: valid SearchAPI key

FAQ

What database does it use?

SQLite, pure Go, no cgo. A Postgres option is on the list, not in v0.1.

Can I track more than one brand?

Not in v0.1, which is one property per instance. Run several instances, or use the hosted product, which is built for portfolios.

Does any of my data leave my machine?

Only the prompt text, in the calls to the engines and scrapers you configure. Answers, mentions, citations and usage stay in your SQLite file.

Do I need a scraper account?

Not to start. One API key gets you running. Scrapers are what you add when you want the consumer surface or the Google AI surfaces, which have no API.

Why does my ChatGPT number differ from what I see in ChatGPT?

Because an API call with web search on and the consumer product are different surfaces. Both are tracked, labeled api and scraped, and never averaged together.

Does this replace my SEO tool?

No. It measures a different surface. Traditional SEO tools measure ranked links; this measures what a generated answer says and cites.

More in Analytics

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…