{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "en",
  "slug": "decimen-optical-transfer",
  "url": "https://tesign.com/en/item/decimen-optical-transfer/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/decimen-optical-transfer/",
      "json": "https://tesign.com/item/decimen-optical-transfer/index.json",
      "markdown": "https://tesign.com/item/decimen-optical-transfer/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/decimen-optical-transfer/",
      "json": "https://tesign.com/en/item/decimen-optical-transfer/index.json",
      "markdown": "https://tesign.com/en/item/decimen-optical-transfer/index.md"
    }
  },
  "name": "Decimen Optical Transfer",
  "use_label": "File transfer with no network",
  "one_liner": "Send a file up to 64 MB between two devices using only a screen and a camera; no network.",
  "text": {
    "why": "When there is no network between two devices, or none you trust, Decimen shows the file as an endless stream of animated QR codes and the other device's camera reads it back. A screen-to-camera link has no return channel, so it uses fountain codes (Luby transform): the receiver collects any ~K×1.15 distinct frames in any order, and dropped frames cost time, never correctness. A published record with its run report shows 1.0 MB in 2.5 s, 418.5 KB/s sustained, from a 49-inch monitor to an iPhone 17 Pro Max.",
    "take": "An experiment that takes an old idea, moving bytes as light instead of over a network, to usable speed with fountain codes and nothing but a browser; it is upfront that there is no encryption, so any camera watching the screen can read it.",
    "build": [
      "Export a stream as an APNG or PNG sequence and drop it into a video lesson or a page: anyone pointing a camera at the playing file receives it. The source self-hosts with npm and also builds as two standalone pages, which fits air-gapped distribution."
    ],
    "who": [
      {
        "role": "Air-gapped rooms and locked-down networks",
        "situation": "pass a config file or document with only a screen and a camera"
      },
      {
        "role": "Handing a short text or file to an unfamiliar device",
        "situation": "no account, pairing or cloud, just a browser on both sides"
      },
      {
        "role": "Developers curious about coding theory and in-browser camera work",
        "situation": "open protocol docs and benchmark run reports"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "1. Open https://decimen.app/ on both devices — nothing to install; one side Send, the other Receive"
      },
      {
        "command": false,
        "text": "2. To run it yourself:"
      },
      {
        "command": false,
        "text": "npm install"
      },
      {
        "command": false,
        "text": "npm run dev"
      },
      {
        "command": false,
        "text": "Open https://localhost:5173/send/ on the sending device and the printed Network URL on the receiving phone (accept the self-signed certificate once)"
      }
    ],
    "caveat": [
      "AGPL-3.0-or-later licence (since v0.4.0; releases up to v0.3.0 remain MIT). AGPL obligations apply if you self-host or redistribute modified versions.",
      "No encryption — any camera that can see the sending screen can read the file. Limits: 64 MB files, 4 MB text.",
      "A web app (PWA) needing only camera permission; speed depends heavily on screen size and camera (phone-to-phone record is 199.2 KB/s). v0.5.3 per the homepage."
    ]
  },
  "cta": {
    "type": "try",
    "label": "TRY",
    "url": "https://decimen.app/"
  },
  "ready": "browser",
  "categories": [
    "experiment",
    "media"
  ],
  "categories_confirmed": true,
  "tags": [
    "qr-code",
    "file-transfer",
    "fountain-codes",
    "air-gap",
    "pwa",
    "camera"
  ],
  "platform": [
    "web",
    "ios",
    "android"
  ],
  "license": {
    "spdx": "AGPL-3.0",
    "scope": "copyleft",
    "scope_text": "Release source if you redistribute or host it as a service.",
    "url": "https://spdx.org/licenses/AGPL-3.0.html",
    "note": null,
    "open_source": true
  },
  "language": "TypeScript",
  "source_urls": {
    "canonical": "https://decimen.app/",
    "github": "https://github.com/bashalarmistalt/decimen-optical-transfer",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "github",
        "url": "https://github.com/bashalarmistalt/decimen-optical-transfer",
        "posted_at": "2026-08-07T16:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 6752,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:34:43.861Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": null,
    "star_delta_30d": 2,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      2,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": null,
    "hn_points_observed_at": null,
    "store": null,
    "method": "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours."
  },
  "ranks": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "all_time": null,
    "rising": {
      "24h": null,
      "7d": null,
      "30d": null
    },
    "categories": [
      {
        "category": "media",
        "label": "MEDIA",
        "rank": 15
      }
    ]
  },
  "activity": {
    "pushed_at": "2026-08-26T12:51:11.000Z",
    "owner_type": "User",
    "open_issues": 23,
    "contributors": 2,
    "releases_count": 8,
    "latest_release": {
      "tag": "v0.5.3",
      "published_at": "2026-08-20T00:46:56.000Z",
      "prerelease": false
    },
    "checked_at": "2026-09-15T19:34:43.861Z",
    "core_checked_at": "2026-09-15T19:34:43.861Z"
  },
  "signals": [
    {
      "kind": "back",
      "label": "BACK CATALOG",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/decimen-optical-transfer-4354ccd078.jpg",
    "cover": "https://tesign.com/img/decimen-optical-transfer-4354ccd078.jpg",
    "cover_width": 840,
    "cover_height": 1525,
    "gallery": [
      "https://tesign.com/img/decimen-optical-transfer-4354ccd078.jpg",
      "https://tesign.com/img/decimen-optical-transfer-5537a8d35c.png"
    ],
    "alt": "A phone receiving a file from another screen's animated QR stream, showing 130.5 KB/s goodput and decoding about halfway done",
    "tier": 2
  },
  "dates": {
    "first_seen_at": "2026-09-13T09:14:08.680Z",
    "source_created_at": "2026-07-30T18:17:54.000Z",
    "discovery_hours": 1070.937411111111,
    "launch_signal_at": "2026-08-07T16:00:00.000Z",
    "kept_at": "2026-09-14T19:27:43.543Z",
    "first_published_at": "2026-09-14T19:27:43.743Z",
    "updated_at": "2026-09-15T04:36:56.834Z",
    "ingestion_mode": "backfill"
  },
  "notes": [
    "This file was produced by the same build, from the same data, as the tesign.com item page. The text is editorial; the numbers are stored observations.",
    "null in the JSON means not observed — never zero. The Markdown writes [unconfirmed] for it.",
    "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours.",
    "Reconstructed from archive data, not a live discovery.",
    "A summary, not legal advice."
  ]
}
