For AI agents
Open-source licenses as data: 44 data and AI projects, every relicensing dated, foundations, companies and stars. Refreshed weekly.
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 |
| 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": 44,
"projects": [
{
"slug": "tensorflow",
"name": "TensorFlow",
"repo": "tensorflow/tensorflow",
"github": "https://github.com/tensorflow/tensorflow",
"category": "ml",
"categoryName": "ML frameworks",
"description": "An Open Source Machine Learning Framework for Everyone",
"license": "Apache-2.0",
"licenseName": "Apache 2.0",
"openSource": true,
"licenseHistory": [],
"foundation": null,
"company": {
"slug": "google",
"name": "Google",
"domain": "google.com",
"inRegistry": true
},
"forkOf": null,
"forkedBy": [],
"stars": 200290,
"starsPerWeek": 538,
"starsPerWeekSource": "OSS Insight weekly star history, Aug 31 to Sep 21, 2026",
"forks": 77225,
"latestRelease": {
"tag": "v2.21.0",
"date": "2026-03-06",
"url": "https://github.com/tensorflow/tensorflow/releases/tag/v2.21.0"
},
"a
.../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": "2025-05-01",
"from": "RSALv2 OR SSPL-1.0",
"to": "RSALv2 OR SSPL-1.0 OR AGPL-3.0",
"fromName": "Redis Source Available License v2 or SSPL v1",
"toName": "Redis Source Available License v2 or SSPL v1 or AGPL v3",
"note": "From Redis 8, AGPL v3 added as a third option.",
"commit": "https://github.com/redis/redis/commit/d65102861f51af48241f607afa678c4c2a0f894c",
"announcement": "https://redis.io/blog/agplv3/",
"announced": "2025-05-01"
},
{
"date": "2025-07-23",
"from": "Elastic-2.0+MIT",
"to": "Elastic-2.0",
"fromName": "Elastic License 2.0 (platform) and MIT (connectors)",
"toName": "Elastic License 2.0",
"note": "Remaining licenses in the repository migrated to the Elastic License 2.0.",
"commit": "https://github.com/airbytehq/airbyte/commit/f3a5cb388d9fdbc225e4c84036f73f954624a404",
"announcement": null,
.../api/companies
curl -s "https://repos.fru.dev/api/companies?since=2024-01-01"{
"companies": [
{
"slug": "databricks",
"name": "Databricks",
"domain": "databricks.com",
"in_registry": true,
"url": "https://repos.fru.dev/companies/databricks",
"projects": 3,
"items": [
{
"date": "2026-09-17",
"type": "release",
"title": "MLflow v3.16.1",
"url": "https://repos.fru.dev/projects/mlflow",
"source_url": "https://github.com/mlflow/mlflow/releases/tag/v3.16.1"
}
]
}
]
}/api/changes
curl -s "https://repos.fru.dev/api/changes?since=2026-09-01&limit=3"{
"changes": [
{
"id": 44,
"project": "grafana",
"field": "added",
"old": "",
"new": "grafana/grafana",
"changedAt": "2026-09-24T22:58:56Z",
"source": "https://github.com/grafana/grafana"
},
{
"id": 43,
"project": "tensorflow",
"field": "added",
"old": "",
"new": "tensorflow/tensorflow",
"changedAt": "2026-09-24T22:58:56Z",
"source": "https://github.com/tensorflow/tensorflow"
}
]
}/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 weekly.
- Be polite: 60 requests a minute at most.
- License summaries are for orientation, not legal advice.