{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "en",
  "slug": "openmouse",
  "url": "https://tesign.com/en/item/openmouse/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/openmouse/",
      "json": "https://tesign.com/item/openmouse/index.json",
      "markdown": "https://tesign.com/item/openmouse/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/openmouse/",
      "json": "https://tesign.com/en/item/openmouse/index.json",
      "markdown": "https://tesign.com/en/item/openmouse/index.md"
    }
  },
  "name": "OpenMouse",
  "use_label": "Gaming-mouse settings in the browser",
  "one_liner": "Browser control panel for gaming-mouse DPI and polling rate, no vendor driver needed",
  "text": {
    "why": "Instead of one vendor app per brand, it talks to the mouse over the browser's WebHID, reads its information and changes settings such as DPI and polling rate. Packet codecs and drivers live in the separate @openmouse/protocol library, whose README lists 32 brand/protocol entry points including Razer, Logitech, Pulsar, Lamzu, Glorious, Finalmouse and the SteelSeries Rival 3. It states plainly that an implemented protocol does not mean every mouse of that brand works; a catalog's verified field marks hardware-tested support.",
    "take": "An attempt to replace a settings app per brand with one web page — and its own README insists that 'protocol implemented' and 'verified on hardware' are two different claims.",
    "build": [
      "The codec entry points in @openmouse/protocol work without WebHID, so you could build a Node.js mouse-configuration CLI or your own Linux settings tool on them. AGPL-3.0 applies even when you offer it as a service."
    ],
    "who": [
      {
        "role": "Gamers with mice from several brands",
        "situation": "one page instead of several vendor apps"
      },
      {
        "role": "Linux users",
        "situation": "change DPI and polling where no official app exists (hidraw udev rules required)"
      },
      {
        "role": "Developers reverse-engineering mouse protocols",
        "situation": "contribute codecs to the per-brand library"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "# Use it directly: open https://openmouse.app in your browser and connect the mouse"
      },
      {
        "command": false,
        "text": "npm install    # local development"
      },
      {
        "command": false,
        "text": "npm run dev"
      },
      {
        "command": false,
        "text": "# On Linux, if you see 'Failed to open the device', adapt the README udev example (70-openmouse-vxe.rules, written for the VXE R1 SE+) to your device IDs from lsusb, then:"
      },
      {
        "command": false,
        "text": "sudo udevadm control --reload-rules"
      }
    ],
    "caveat": [
      "AGPL-3.0 — source must be published even when offered over a network",
      "WebHID-based; the README describes it against Chromium's device picker, other browsers [확인 필요]. Linux needs hidraw udev rules",
      "The supported-device list lives in the separate mouse-protocol repo, and an implemented brand protocol does not mean every model works (check the verified field); no GitHub releases, it is deployed as a web app"
    ]
  },
  "cta": {
    "type": "try",
    "label": "TRY",
    "url": "https://openmouse.app/"
  },
  "ready": "browser",
  "categories": [
    "hardware",
    "games"
  ],
  "categories_confirmed": true,
  "tags": [
    "webhid",
    "gaming-mouse",
    "dpi",
    "polling-rate",
    "typescript",
    "agpl"
  ],
  "platform": [
    "web"
  ],
  "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://openmouse.app/",
    "github": "https://github.com/openmouse-project/openmouse",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "github",
        "url": "https://github.com/openmouse-project/openmouse",
        "posted_at": "2026-09-04T17:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 1931,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:35:04.368Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": null,
    "star_delta_30d": 102,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      36,
      60,
      6,
      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": "games",
        "label": "GAMES",
        "rank": 7
      },
      {
        "category": "hardware",
        "label": "HARDWARE",
        "rank": 3
      }
    ]
  },
  "activity": {
    "pushed_at": "2026-09-15T05:40:34.000Z",
    "owner_type": "Organization",
    "open_issues": 24,
    "contributors": 36,
    "releases_count": 0,
    "latest_release": null,
    "checked_at": "2026-09-15T19:35:04.368Z",
    "core_checked_at": "2026-09-15T19:35:04.368Z"
  },
  "signals": [
    {
      "kind": "back",
      "label": "BACK CATALOG",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/openmouse-b9bd418845.png",
    "cover": "https://tesign.com/img/openmouse-b9bd418845.png",
    "cover_width": 2400,
    "cover_height": 1260,
    "gallery": [
      "https://tesign.com/img/openmouse-b9bd418845.png",
      "https://tesign.com/img/openmouse-d2c51ee4d9.png"
    ],
    "alt": "The OpenMouse web control panel showing a connected mouse's information and its DPI and polling-rate settings",
    "tier": 1
  },
  "dates": {
    "first_seen_at": "2026-09-13T09:39:32.403Z",
    "source_created_at": "2026-07-27T03:22:31.000Z",
    "discovery_hours": 1158.2837230555556,
    "launch_signal_at": "2026-09-04T17:00:00.000Z",
    "kept_at": "2026-09-14T19:27:43.599Z",
    "first_published_at": "2026-09-14T19:27:43.743Z",
    "updated_at": "2026-09-15T04:36:56.942Z",
    "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."
  ]
}
