{
 "id": "robotparts-sources",
 "title": "Sources",
 "titleProperty": "name",
 "linkProperty": "page",
 "source": "robotparts dist/site/v2/sources.json, release 2026.10.25.1; 43 of 196 sources, at most 8 per kind, oldest access first; freshness as of 2026-11-25",
 "properties": {
  "name": {
   "type": "text",
   "label": "Source"
  },
  "id": {
   "type": "text",
   "label": "Id",
   "hidden": true
  },
  "kind": {
   "type": "text",
   "label": "Kind",
   "display": "badge",
   "note": "maker: a maker's own site (makers.toml); seller: a shop that sells the part; distributor: a distributor (an atlas labels its values distributor); atlas: an atlas: the repository that owns the records; registry/API: a package registry or an API a reading came from; code host: a code host: repositories, pinned files and evidence; robotparts: robotparts.dev itself; image host: a host that serves only images; web: any other web page"
  },
  "rule": {
   "type": "text",
   "label": "Rule",
   "note": "may robotparts read it"
  },
  "hosts": {
   "type": "list",
   "label": "Other hosts"
  },
  "parts": {
   "type": "number",
   "label": "Parts"
  },
  "assets": {
   "type": "number",
   "label": "Assets"
  },
  "last_accessed": {
   "type": "date",
   "label": "Last accessed",
   "note": "the newest date among its assets"
  },
  "via_atlas": {
   "type": "boolean",
   "label": "Dated by atlas commit"
  },
  "first_seen": {
   "type": "date",
   "label": "First seen"
  },
  "age_days": {
   "type": "number",
   "label": "Age",
   "unitText": "days",
   "note": "days from last access to 2026-11-25"
  },
  "links": {
   "type": "number",
   "label": "URLs"
  },
  "links_checked": {
   "type": "number",
   "label": "Checked"
  },
  "oldest_check": {
   "type": "date",
   "label": "Oldest link check"
  },
  "dead": {
   "type": "number",
   "label": "Dead"
  },
  "moved": {
   "type": "number",
   "label": "Moved"
  },
  "freshness": {
   "type": "text",
   "label": "Freshness",
   "display": "badge",
   "colors": {
    "needs refresh": 8,
    "fresh": 0,
    "date not recorded": 0
   },
   "note": "as of 2026-11-25, by freshness.toml's thresholds"
  },
  "stale_kinds": {
   "type": "list",
   "label": "Stale",
   "display": "badge",
   "colors": {
    "link": 8,
    "spec value": 8,
    "citation": 8,
    "port": 8,
    "photo": 8,
    "CAD": 8,
    "sim model": 8,
    "document": 8,
    "software": 8,
    "software reading": 8,
    "price observation": 8,
    "measurement": 8,
    "logo": 8,
    "link checks": 8
   },
   "note": "the kinds whose oldest asset is past its threshold"
  },
  "oldest": {
   "type": "text",
   "label": "Oldest asset by kind",
   "hidden": true
  },
  "refresh": {
   "type": "text",
   "label": "How it refreshes"
  },
  "page": {
   "type": "text",
   "label": "Page",
   "hidden": true
  }
 },
 "rows": [
  {
   "id": "cdn.shopify.com",
   "name": "cdn.shopify.com",
   "kind": "web",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 1145,
   "assets": 1445,
   "last_accessed": "2026-10-08",
   "via_atlas": false,
   "first_seen": "2026-10-08",
   "age_days": 48,
   "links": 1326,
   "links_checked": 1326,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "photo 2026-10-08, spec value 2026-10-09",
   "refresh": "python3 ~/robotparts/tools/live.py ingest cdn.shopify.com",
   "page": "https://robotparts.dev/sources/cdn.shopify.com/"
  },
  {
   "id": "shop.smc-powers.com",
   "name": "shop.smc-powers.com",
   "kind": "seller",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 1,
   "assets": 23,
   "last_accessed": "2026-10-08",
   "via_atlas": false,
   "first_seen": "2026-10-08",
   "age_days": 48,
   "links": 2,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "link 2026-10-08, price observation 2026-10-08, spec value 2026-10-08",
   "refresh": null,
   "page": "https://robotparts.dev/sources/shop.smc-powers.com/"
  },
  {
   "id": "actuator-atlas",
   "name": "actuator-atlas",
   "kind": "atlas",
   "rule": "atlas",
   "hosts": [],
   "parts": 1146,
   "assets": 21764,
   "last_accessed": "2026-10-09",
   "via_atlas": true,
   "first_seen": "2026-10-09",
   "age_days": 47,
   "links": null,
   "links_checked": null,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-09",
   "refresh": null,
   "page": "https://robotparts.dev/sources/actuator-atlas/"
  },
  {
   "id": "download.s21i.co99.net",
   "name": "download.s21i.co99.net",
   "kind": "web",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 4,
   "assets": 12,
   "last_accessed": "2026-10-09",
   "via_atlas": true,
   "first_seen": "2026-10-09",
   "age_days": 47,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-09",
   "refresh": "python3 ~/robotparts/tools/live.py ingest download.s21i.co99.net",
   "page": "https://robotparts.dev/sources/download.s21i.co99.net/"
  },
  {
   "id": "openelab.io",
   "name": "openelab.io",
   "kind": "web",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 1,
   "assets": 1,
   "last_accessed": "2026-10-09",
   "via_atlas": true,
   "first_seen": "2026-10-09",
   "age_days": 47,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-09",
   "refresh": "python3 ~/robotparts/tools/live.py ingest openelab.io",
   "page": "https://robotparts.dev/sources/openelab.io/"
  },
  {
   "id": "store.cubemars.com",
   "name": "CubeMars",
   "kind": "maker",
   "rule": "maker's own site",
   "hosts": [],
   "parts": 2,
   "assets": 2,
   "last_accessed": "2026-10-09",
   "via_atlas": true,
   "first_seen": "2026-10-09",
   "age_days": 47,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-09",
   "refresh": "python3 ~/robotparts/tools/live.py ingest store.cubemars.com",
   "page": "https://robotparts.dev/sources/store.cubemars.com/"
  },
  {
   "id": "1stvision.com",
   "name": "1stvision.com",
   "kind": "distributor",
   "rule": "not reviewed",
   "hosts": [
    "www.1stvision.com"
   ],
   "parts": 27,
   "assets": 109,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 4,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest 1stvision.com",
   "page": "https://robotparts.dev/sources/1stvision.com/"
  },
  {
   "id": "adept.net.au",
   "name": "adept.net.au",
   "kind": "web",
   "rule": "not reviewed",
   "hosts": [
    "www.adept.net.au"
   ],
   "parts": 6,
   "assets": 149,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 3,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest adept.net.au",
   "page": "https://robotparts.dev/sources/adept.net.au/"
  },
  {
   "id": "alliedvision.com",
   "name": "alliedvision.com",
   "kind": "web",
   "rule": "not reviewed",
   "hosts": [
    "www.alliedvision.com"
   ],
   "parts": 26,
   "assets": 1051,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 32,
   "links_checked": 32,
   "oldest_check": "2026-10-26",
   "dead": 1,
   "moved": 26,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest alliedvision.com",
   "page": "https://robotparts.dev/sources/alliedvision.com/"
  },
  {
   "id": "am.lmi3d.com",
   "name": "am.lmi3d.com",
   "kind": "web",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 7,
   "assets": 7,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest am.lmi3d.com",
   "page": "https://robotparts.dev/sources/am.lmi3d.com/"
  },
  {
   "id": "amazon.com",
   "name": "Amazon.com (sold by BOSYTRO Store; Amazon)",
   "kind": "seller",
   "rule": "never read (unread)",
   "hosts": [
    "www.amazon.com"
   ],
   "parts": 21,
   "assets": 171,
   "last_accessed": "2026-10-18",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 14,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "link 2026-10-21, price observation 2026-10-18, spec value 2026-10-18",
   "refresh": null,
   "page": "https://robotparts.dev/sources/amazon.com/"
  },
  {
   "id": "arrow.com",
   "name": "Arrow",
   "kind": "seller",
   "rule": "not reviewed",
   "hosts": [
    "www.arrow.com"
   ],
   "parts": 2,
   "assets": 4,
   "last_accessed": "2026-10-18",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 2,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "price observation 2026-10-18, spec value 2026-10-21",
   "refresh": null,
   "page": "https://robotparts.dev/sources/arrow.com/"
  },
  {
   "id": "assets.balluff.com",
   "name": "assets.balluff.com",
   "kind": "web",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 2,
   "assets": 80,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 6,
   "links_checked": 6,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest assets.balluff.com",
   "page": "https://robotparts.dev/sources/assets.balluff.com/"
  },
  {
   "id": "atecorp.com",
   "name": "atecorp.com",
   "kind": "web",
   "rule": "not reviewed",
   "hosts": [
    "www.atecorp.com"
   ],
   "parts": 4,
   "assets": 87,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 3,
   "links_checked": 2,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest atecorp.com",
   "page": "https://robotparts.dev/sources/atecorp.com/"
  },
  {
   "id": "avnet.com",
   "name": "Avnet Americas",
   "kind": "seller",
   "rule": "never read (unread)",
   "hosts": [
    "www.avnet.com"
   ],
   "parts": 17,
   "assets": 29,
   "last_accessed": "2026-10-18",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 17,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "price observation 2026-10-18, spec value 2026-10-21",
   "refresh": null,
   "page": "https://robotparts.dev/sources/avnet.com/"
  },
  {
   "id": "baslerweb.com",
   "name": "Basler web shop (US)",
   "kind": "seller",
   "rule": "never read (unread)",
   "hosts": [
    "www.baslerweb.com"
   ],
   "parts": 33,
   "assets": 773,
   "last_accessed": "2026-10-18",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 33,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "link 2026-10-18, price observation 2026-10-18, spec value 2026-10-18",
   "refresh": null,
   "page": "https://robotparts.dev/sources/baslerweb.com/"
  },
  {
   "id": "bodkindesign.com",
   "name": "bodkindesign.com",
   "kind": "distributor",
   "rule": "not reviewed",
   "hosts": [
    "www.bodkindesign.com"
   ],
   "parts": 1,
   "assets": 16,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest bodkindesign.com",
   "page": "https://robotparts.dev/sources/bodkindesign.com/"
  },
  {
   "id": "camera-atlas",
   "name": "camera-atlas",
   "kind": "atlas",
   "rule": "atlas",
   "hosts": [],
   "parts": 468,
   "assets": 20705,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": null,
   "links_checked": null,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-18",
   "refresh": null,
   "page": "https://robotparts.dev/sources/camera-atlas/"
  },
  {
   "id": "cdn.i-pulse.nl",
   "name": "cdn.i-pulse.nl",
   "kind": "distributor",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 1,
   "assets": 18,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest cdn.i-pulse.nl",
   "page": "https://robotparts.dev/sources/cdn.i-pulse.nl/"
  },
  {
   "id": "chromos.ch",
   "name": "chromos.ch",
   "kind": "distributor",
   "rule": "not reviewed",
   "hosts": [
    "www.chromos.ch"
   ],
   "parts": 1,
   "assets": 15,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest chromos.ch",
   "page": "https://robotparts.dev/sources/chromos.ch/"
  },
  {
   "id": "dev.realsenseai.com",
   "name": "RealSense",
   "kind": "maker",
   "rule": "maker's own site",
   "hosts": [],
   "parts": 11,
   "assets": 11,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest dev.realsenseai.com",
   "page": "https://robotparts.dev/sources/dev.realsenseai.com/"
  },
  {
   "id": "digikey.com",
   "name": "Digi-Key",
   "kind": "seller",
   "rule": "never read (unread)",
   "hosts": [
    "www.digikey.com"
   ],
   "parts": 34,
   "assets": 54,
   "last_accessed": "2026-10-18",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 34,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "price observation 2026-10-18, spec value 2026-10-21",
   "refresh": null,
   "page": "https://robotparts.dev/sources/digikey.com/"
  },
  {
   "id": "e-sonic.com",
   "name": "Electro Sonic",
   "kind": "seller",
   "rule": "never read (unread)",
   "hosts": [
    "www.e-sonic.com"
   ],
   "parts": 31,
   "assets": 45,
   "last_accessed": "2026-10-18",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 33,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "price observation 2026-10-18, spec value 2026-10-21",
   "refresh": null,
   "page": "https://robotparts.dev/sources/e-sonic.com/"
  },
  {
   "id": "edmundoptics.ca",
   "name": "Edmund Optics (Canada)",
   "kind": "seller",
   "rule": "not reviewed",
   "hosts": [
    "www.edmundoptics.ca"
   ],
   "parts": 2,
   "assets": 2,
   "last_accessed": "2026-10-18",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 2,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "price observation 2026-10-18, spec value 2026-10-18",
   "refresh": null,
   "page": "https://robotparts.dev/sources/edmundoptics.ca/"
  },
  {
   "id": "edmundoptics.com",
   "name": "Edmund Optics",
   "kind": "distributor",
   "rule": "never read (unread)",
   "hosts": [
    "www.edmundoptics.com"
   ],
   "parts": 46,
   "assets": 142,
   "last_accessed": "2026-10-18",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 46,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "price observation 2026-10-18, spec value 2026-10-18",
   "refresh": null,
   "page": "https://robotparts.dev/sources/edmundoptics.com/"
  },
  {
   "id": "photonics.com",
   "name": "photonics.com",
   "kind": "distributor",
   "rule": "not reviewed",
   "hosts": [
    "www.photonics.com"
   ],
   "parts": 1,
   "assets": 12,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest photonics.com",
   "page": "https://robotparts.dev/sources/photonics.com/"
  },
  {
   "id": "pypi.org",
   "name": "pypi.org",
   "kind": "registry/API",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 185,
   "assets": 354,
   "last_accessed": "2026-10-18",
   "via_atlas": true,
   "first_seen": "2026-10-18",
   "age_days": 38,
   "links": 13,
   "links_checked": 13,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest pypi.org",
   "page": "https://robotparts.dev/sources/pypi.org/"
  },
  {
   "id": "psu-atlas",
   "name": "psu-atlas",
   "kind": "atlas",
   "rule": "atlas",
   "hosts": [],
   "parts": 445,
   "assets": 12547,
   "last_accessed": "2026-10-21",
   "via_atlas": true,
   "first_seen": "2026-10-21",
   "age_days": 35,
   "links": null,
   "links_checked": null,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "spec value 2026-10-21",
   "refresh": null,
   "page": "https://robotparts.dev/sources/psu-atlas/"
  },
  {
   "id": "14180476.s21i.faiusr.com",
   "name": "SteadyWin",
   "kind": "maker",
   "rule": "maker's own site",
   "hosts": [],
   "parts": 1,
   "assets": 20,
   "last_accessed": "2026-10-22",
   "via_atlas": false,
   "first_seen": "2026-10-22",
   "age_days": 34,
   "links": 2,
   "links_checked": 2,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "CAD 2026-10-22, document 2026-10-22, port 2026-10-22",
   "refresh": "python3 ~/robotparts/tools/live.py ingest 14180476.s21i.faiusr.com",
   "page": "https://robotparts.dev/sources/14180476.s21i.faiusr.com/"
  },
  {
   "id": "deeprobotics.cn",
   "name": "DEEP Robotics",
   "kind": "maker",
   "rule": "maker's own site",
   "hosts": [
    "www.deeprobotics.cn"
   ],
   "parts": 2,
   "assets": 14,
   "last_accessed": "2026-10-22",
   "via_atlas": false,
   "first_seen": "2026-10-22",
   "age_days": 34,
   "links": 1,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "citation 2026-10-22, document 2026-10-22, spec value 2026-10-22",
   "refresh": "python3 ~/robotparts/tools/live.py ingest deeprobotics.cn",
   "page": "https://robotparts.dev/sources/deeprobotics.cn/"
  },
  {
   "id": "docs.odriverobotics.com",
   "name": "ODrive Robotics",
   "kind": "maker",
   "rule": "maker's own site",
   "hosts": [],
   "parts": 1,
   "assets": 45,
   "last_accessed": "2026-10-22",
   "via_atlas": false,
   "first_seen": "2026-10-22",
   "age_days": 34,
   "links": 3,
   "links_checked": 3,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "document 2026-10-22, link 2026-10-22, port 2026-10-22, spec value 2026-10-22",
   "refresh": "python3 ~/robotparts/tools/live.py ingest docs.odriverobotics.com",
   "page": "https://robotparts.dev/sources/docs.odriverobotics.com/"
  },
  {
   "id": "github.com",
   "name": "github.com",
   "kind": "code host",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 147,
   "assets": 307,
   "last_accessed": "2026-10-22",
   "via_atlas": false,
   "first_seen": "2026-10-21",
   "age_days": 34,
   "links": 24,
   "links_checked": 22,
   "oldest_check": "2026-10-26",
   "dead": 6,
   "moved": 2,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "document 2026-10-22, link 2026-10-18, measurement 2026-10-21, software 2026-10-22, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest github.com",
   "page": "https://robotparts.dev/sources/github.com/"
  },
  {
   "id": "mjbots.github.io",
   "name": "mjbots",
   "kind": "maker",
   "rule": "maker's own site",
   "hosts": [],
   "parts": 4,
   "assets": 33,
   "last_accessed": "2026-10-22",
   "via_atlas": false,
   "first_seen": "2026-10-22",
   "age_days": 34,
   "links": 6,
   "links_checked": 6,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "document 2026-10-22, link 2026-10-22, port 2026-10-22, spec value 2026-10-22",
   "refresh": "python3 ~/robotparts/tools/live.py ingest mjbots.github.io",
   "page": "https://robotparts.dev/sources/mjbots.github.io/"
  },
  {
   "id": "raw.githubusercontent.com",
   "name": "raw.githubusercontent.com",
   "kind": "code host",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 2,
   "assets": 4,
   "last_accessed": "2026-10-22",
   "via_atlas": false,
   "first_seen": "2026-10-22",
   "age_days": 34,
   "links": 4,
   "links_checked": 4,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "CAD 2026-10-22, document 2026-10-22",
   "refresh": "python3 ~/robotparts/tools/live.py ingest raw.githubusercontent.com",
   "page": "https://robotparts.dev/sources/raw.githubusercontent.com/"
  },
  {
   "id": "store.realsenseai.com",
   "name": "RealSense",
   "kind": "maker",
   "rule": "never read (refused)",
   "hosts": [],
   "parts": 12,
   "assets": 319,
   "last_accessed": "2026-10-22",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 34,
   "links": 16,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "document 2026-10-22, link 2026-10-18, photo 2026-10-22, price observation 2026-10-18, spec value 2026-10-18",
   "refresh": null,
   "page": "https://robotparts.dev/sources/store.realsenseai.com/"
  },
  {
   "id": "szjmc.com",
   "name": "JMC (Shenzhen Just Motion Control Electro-Mechanics)",
   "kind": "maker",
   "rule": "maker's own site",
   "hosts": [
    "www.szjmc.com"
   ],
   "parts": 2,
   "assets": 2,
   "last_accessed": "2026-10-22",
   "via_atlas": false,
   "first_seen": "2026-10-22",
   "age_days": 34,
   "links": 2,
   "links_checked": 2,
   "oldest_check": "2026-10-26",
   "dead": 2,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "document 2026-10-22",
   "refresh": "python3 ~/robotparts/tools/live.py ingest szjmc.com",
   "page": "https://robotparts.dev/sources/szjmc.com/"
  },
  {
   "id": "api.github.com",
   "name": "api.github.com",
   "kind": "registry/API",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 80,
   "assets": 127,
   "last_accessed": "2026-10-23",
   "via_atlas": false,
   "first_seen": "2026-10-23",
   "age_days": 33,
   "links": 8,
   "links_checked": 8,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "software reading"
   ],
   "oldest": "software reading 2026-10-23",
   "refresh": "python3 ~/robotparts/tools/live.py ingest api.github.com",
   "page": "https://robotparts.dev/sources/api.github.com/"
  },
  {
   "id": "app.viam.com",
   "name": "app.viam.com",
   "kind": "registry/API",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 7,
   "assets": 14,
   "last_accessed": "2026-10-23",
   "via_atlas": false,
   "first_seen": "2026-10-23",
   "age_days": 33,
   "links": 3,
   "links_checked": 3,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "software reading"
   ],
   "oldest": "software reading 2026-10-23",
   "refresh": "python3 ~/robotparts/tools/live.py ingest app.viam.com",
   "page": "https://robotparts.dev/sources/app.viam.com/"
  },
  {
   "id": "pypistats.org",
   "name": "pypistats.org",
   "kind": "registry/API",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 87,
   "assets": 87,
   "last_accessed": "2026-10-23",
   "via_atlas": false,
   "first_seen": "2026-10-23",
   "age_days": 33,
   "links": 5,
   "links_checked": 5,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "software reading"
   ],
   "oldest": "software reading 2026-10-23",
   "refresh": "python3 ~/robotparts/tools/live.py ingest pypistats.org",
   "page": "https://robotparts.dev/sources/pypistats.org/"
  },
  {
   "id": "robotparts.dev",
   "name": "robotparts.dev",
   "kind": "robotparts",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 1,
   "assets": 1,
   "last_accessed": "2026-10-23",
   "via_atlas": false,
   "first_seen": "2026-10-23",
   "age_days": 33,
   "links": 1,
   "links_checked": 1,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "software reading"
   ],
   "oldest": "software reading 2026-10-23",
   "refresh": "python3 ~/robotparts/tools/live.py ingest robotparts.dev",
   "page": "https://robotparts.dev/sources/robotparts.dev/"
  },
  {
   "id": "at-sensors.com",
   "name": "at-sensors.com",
   "kind": "image host",
   "rule": "not reviewed",
   "hosts": [
    "www.at-sensors.com"
   ],
   "parts": 0,
   "assets": 1,
   "last_accessed": "2026-10-26",
   "via_atlas": false,
   "first_seen": "2026-10-26",
   "age_days": 30,
   "links": 1,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "logo 2026-10-26",
   "refresh": "python3 ~/robotparts/tools/live.py ingest at-sensors.com",
   "page": "https://robotparts.dev/sources/at-sensors.com/"
  },
  {
   "id": "edmundoptics.eu",
   "name": "edmundoptics.eu",
   "kind": "distributor",
   "rule": "not reviewed",
   "hosts": [
    "www.edmundoptics.eu"
   ],
   "parts": 22,
   "assets": 929,
   "last_accessed": "2026-10-26",
   "via_atlas": false,
   "first_seen": "2026-10-26",
   "age_days": 30,
   "links": 22,
   "links_checked": 22,
   "oldest_check": "2026-10-26",
   "dead": null,
   "moved": null,
   "freshness": "fresh",
   "stale_kinds": [],
   "oldest": "link 2026-10-18, photo 2026-10-26, spec value 2026-10-18",
   "refresh": "python3 ~/robotparts/tools/live.py ingest edmundoptics.eu",
   "page": "https://robotparts.dev/sources/edmundoptics.eu/"
  },
  {
   "id": "graftek.com",
   "name": "Graftek Imaging",
   "kind": "distributor",
   "rule": "not reviewed",
   "hosts": [],
   "parts": 5,
   "assets": 22,
   "last_accessed": "2026-10-26",
   "via_atlas": false,
   "first_seen": "2026-10-18",
   "age_days": 30,
   "links": 4,
   "links_checked": 0,
   "oldest_check": null,
   "dead": null,
   "moved": null,
   "freshness": "needs refresh",
   "stale_kinds": [
    "price observation"
   ],
   "oldest": "link 2026-10-18, photo 2026-10-26, price observation 2026-10-18, spec value 2026-10-18",
   "refresh": null,
   "page": "https://robotparts.dev/sources/graftek.com/"
  }
 ]
}
