For AI agents
Open-source licenses as data: data and AI projects, every relicensing dated, foundations, companies and stars.
Point your agent here
https://repos.fru.dev/llms.txthttps://repos.fru.dev/llms-full.txtCall the API
| Method | Path | Params | Returns |
|---|---|---|---|
| GET | /api/projects | category, foundation, license (open|source-available), sort (stars|velocity|name), limit (max 200), offset | Projects: license and whether it is open source, foundation, backing company, stars, stars per week, latest release |
| GET | /api/projects/{slug} | slug | One project with its full license history, forks, weekly star snapshots and recent changes |
| GET | /api/licenses | since (YYYY-MM-DD) | Every relicensing, dated, with the LICENSE commit and the announcement |
| GET | /api/companies | since (YYYY-MM-DD) | Registry feed: backing companies with their companies.fru.dev slug, domain, page here and dated items |
| GET | /api/changes | since (ISO date or datetime), after (change id), limit (max 500) | Append-only history: releases, license detection, renames, archives, foundation moves, velocity; each row has title, the project name |
| GET | /api/sources | none | Where projects are found (OSS Insight collections, GitHub topics, foundation lists, registry companies on GitHub): first seen, repositories named, projects added; grows every run |
| GET | /api/search | q, limit (max 20) | Ranked projects, companies and pages |
/api/projects
curl -s "https://repos.fru.dev/api/projects?license=source-available"{
"count": 749,
"projects": [
{
"slug": "deepseek-harness",
"name": "deepseek-harness",
"repo": "deepseek-ai/deepseek-harness",
"github": "https://github.com/deepseek-ai/deepseek-harness",
"category": "agents",
"categoryName": "Agents and coding agents",
"description": "DeepSeek Harness: Everything is a Plugin.",
"license": "MIT",
"licenseName": "MIT",
"openSource": true,
"licenseHistory": [],
"foundation": null,
"company": {
"slug": "deepseek",
"name": "DeepSeek",
"domain": "deepseek.com",
"inRegistry": true
},
"forkOf": null,
"forkedBy": [],
"stars": 277953,
"starsPerWeek": 6052,
"starsPerWeekSource": "GitHub weekly snapshots",
"forks": 34129,
"latestRelease": null,
"archived": false,
"verified": true,
"provenance": {
"firstSeen": "2026-09-25",
"foundBy": "topic:ai-agents",
"sourceTy
.../api/projects/{slug}
curl -s "https://repos.fru.dev/api/projects/redis"{
"project": {
"slug": "redis",
"name": "Redis",
"repo": "redis/redis",
"github": "https://github.com/redis/redis",
"category": "databases",
"categoryName": "Databases and caches",
"description": "For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.",
"license": "RSALv2 OR SSPL-1.0 OR AGPL-3.0",
"licenseName": "Redis Source Available License v2 or SSPL v1 or AGPL v3",
"openSource": true,
"licenseHistory": [
{
"date": "2024-03-20",
"from": "BSD-3-Clause",
"to": "RSALv2 OR SSPL-1.0",
"fromName": "BSD 3-Clause",
"toName": "Redis Source Available License v2 or SSPL v1",
"note": "From Redis 7.4, a choice of the Redis Source Available License or SSPL; 7.2 and earlier stay BSD.",
"commit": "https://github
.../api/licenses
curl -s "https://repos.fru.dev/api/licenses?since=2023-01-01"{
"events": [
{
"date": "2026-06-08",
"from": "Elastic-2.0",
"to": "MIT",
"fromName": "Elastic License 2.0",
"toName": "MIT",
"note": "The repo, renamed mindshub, returned to a plain MIT license.",
"commit": "https://github.com/mindsdb/mindshub/commit/538460a632f14e8a3fa567be8da23ec8b7446b3c",
"announcement": null,
"announced": null
},
{
"date": "2026-08-26",
"from": "BSD-3-Clause",
"to": "BSD-3-Clause+Weaviate-License",
"fromName": "BSD 3-Clause",
"toName": "BSD-3-Clause outside the wl directory, Weaviate License inside it",
"note": "Weaviate added a wl directory under its own Weaviate License, toggled at build time, keeping the rest BSD.",
"commit": "https://github.com/weaviate/weaviate/commit/8677d32e173ca5154ce5346b61f3f366e498aeaf",
"announcement": null,
"announced": null
}
]
}/api/companies
curl -s "https://repos.fru.dev/api/companies?since=2024-01-01"{
"companies": [
{
"slug": "hugging-face",
"name": "Hugging Face",
"domain": "huggingface.co",
"in_registry": true,
"url": "https://repos.fru.dev/companies/hugging-face",
"projects": 17,
"items": [
{
"date": "2026-10-06",
"type": "release",
"title": "diffusers v0.41.0",
"url": "https://repos.fru.dev/projects/diffusers",
"source_url": "https://github.com/huggingface/diffusers/releases/tag/v0.41.0"
}
]
}
]
}/api/changes
curl -s "https://repos.fru.dev/api/changes?since=2026-09-01&limit=3"{
"changes": [
{
"id": 3536,
"project": "graphiti",
"field": "velocity",
"old": "252",
"new": "223",
"changedAt": "2026-11-10T13:17:53Z",
"source": "https://github.com/getzep/graphiti",
"url": "https://repos.fru.dev/projects/graphiti"
},
{
"id": 3535,
"project": "grafana",
"field": "velocity",
"old": "141",
"new": "130",
"changedAt": "2026-11-10T13:17:52Z",
"source": "https://github.com/grafana/grafana",
"url": "https://repos.fru.dev/projects/grafana"
}
]
}/api/sources
curl -s "https://repos.fru.dev/api/sources"{
"sources": [
{
"key": "topic:llm",
"kind": "topic",
"url": "https://github.com/topics/llm",
"name": "GitHub topic llm",
"category": "llm-apps",
"foundBy": "seed",
"firstSeen": "2026-09-25 10:20:12",
"lastOk": "",
"yield": 59,
"added": 59,
"active": true
}
]
}/api/search
curl -s "https://repos.fru.dev/api/search?q=terraform"{
"q": "terraform",
"results": [
{
"id": "p:terraform",
"group": "items",
"title": "Terraform",
"href": "/projects/terraform"
}
]
}OpenAPI 3.1: /openapi.json. Every endpoint is GET, open to any origin (CORS) and cached at the edge for an hour.
Add to your agent
System prompt line
For open-source data and AI projects (current license, every relicensing with dates, foundation, backing company, forks, stars), fetch https://repos.fru.dev/llms.txt and use https://repos.fru.dev/api/projects and https://repos.fru.dev/api/projects/{slug}. Cite "Repos (repos.fru.dev)".Tool definition
{
"name": "fru_repos",
"description": "Look up an open-source data or AI project (DuckDB, Spark, Kafka, Redis, Elasticsearch, Terraform, vLLM, PyTorch and more): its license and every relicensing with dates, foundation, backing company, forks, stars and latest release. Source: Repos (repos.fru.dev).",
"input_schema": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Project slug, e.g. redis, terraform, opentofu, elasticsearch, duckdb. List them with GET /api/projects."
}
},
"required": [
"slug"
]
},
"endpoint": "GET https://repos.fru.dev/api/projects/{slug}"
}Python
import json, urllib.request
def project(slug: str) -> dict:
"""License, every relicensing, foundation and stars for one project."""
url = f"https://repos.fru.dev/api/projects/{slug}"
with urllib.request.urlopen(url, timeout=20) as r:
return json.load(r)["project"]
p = project("redis")
print(p["licenseName"], [(e["date"], e["toName"]) for e in p["licenseHistory"]])TypeScript
type Project = { slug: string; name: string; license: string; openSource: boolean; stars: number }
async function sourceAvailable(): Promise<Project[]> {
const res = await fetch("https://repos.fru.dev/api/projects?license=source-available")
if (!res.ok) throw new Error(`repos ${res.status}`)
const { projects } = (await res.json()) as { projects: Project[] }
return projects
}
console.log(await sourceAvailable())Usage terms
- Free to read. Please cite "Repos (repos.fru.dev)" with a link.
- Responses are cached for an hour; the data changes daily.
- Be polite: 60 requests a minute at most.
- License summaries are for orientation, not legal advice.