Skip to content

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.txt
https://repos.fru.dev/llms-full.txt

Call the API

MethodPathParamsReturns
GET/api/projectscategory, foundation, license (open|source-available), sort (stars|velocity|name), limit (max 200), offsetProjects: license and whether it is open source, foundation, backing company, stars, stars per week, latest release
GET/api/projects/{slug}slugOne project with its full license history, forks, weekly star snapshots and recent changes
GET/api/licensessince (YYYY-MM-DD)Every relicensing, dated, with the LICENSE commit and the announcement
GET/api/companiessince (YYYY-MM-DD)Registry feed: backing companies with their companies.fru.dev slug, domain, page here and dated items
GET/api/changessince (ISO date or datetime), after (change id), limit (max 500)Append-only history: releases, license detection, renames, archives, foundation moves, velocity
GET/api/searchq, 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.

License changes by email

Only when a tracked project changes its license, foundation or name, at most once a week.

Double opt-in. Unsubscribe any time.