
Darkgrade — a TypeScript library, called Link, that talks to Sony, Canon and Nikon cameras over USB or Wi-Fi, plus an alpha desktop app, Studio, that adds local voice control.
Alternative to: Smart Shooter 6 with its API add-on, $149.99 for the base licence plus $999.99 for the API, one-time, Mac and Windows. The nearest free option is libgphoto2, which Darkgrade's own README names.
Cost to run: free for internal use. You can't ship Darkgrade's code inside a commercial product that competes with it (see Licence).
Licence: Fair Core License 1.0 (FCL-1.0-ALv2), source-available, not open source. Each version turns into Apache 2.0 two years after it is released. The
packages/link/package.jsonfile says MIT, and the LICENSE file says otherwise.Runs on: Node.js 18+ or Bun 1.0+, and browsers (building from source uses Bun 1.4.2+). Wi-Fi control is Node.js only. Studio is set up for a macOS build.
Requires: a camera on USB, or on Wi-Fi, which may need approval on the camera body and is only partly verified on hardware. Studio's voice models download once (about 80 MB to 1.2 GB).
Traction: 33 stars · 0 forks · 29 commits on
main· issue counts unknown, highest PR number seen onmain, #54.Liveness: live. 26 commits in the last 30 days, three author accounts in the past year, no tags or releases, and the documented
npm install @darkgrade/linkreturns 404 from the npm registry. Last commit November 5, 2026.Maturity: version 0.1.0. The README says: "Link is in alpha and APIs may change without backwards compatibility."
Links: repo · site · demo video · no Hacker News thread found
Figures as of November 6, 2026.
What it does
Most cameras made in the last twenty years share one control language. It's a standard called PTP, written up as ISO 15740. Link is a TypeScript version of it, with extra commands for Sony, Canon and Nikon bodies.
In plain terms: plug a camera into a computer, and a few lines of code can set ISO, shutter and aperture, fire the shutter, start a video (Sony and Canon) and pull files off the card. The README's basic example sets exposure and fires the shutter in about a dozen lines.
Studio is the app on top. It is an Electron desktop app with live view, capture, file download and a voice mode. Say "set ISO to 800" or "take a photo" and it does it. Speech recognition runs on the machine through Whisper. Studio's README says speech recognition, intent parsing and spoken replies "never touch the network."
The company's site calls this three acts. Link is the library. Studio is the app. Matrix is a camera compatibility list. Darkgrade is a Y Combinator company from the Fall 2024 batch, based in Denver, and its YC profile lists a team size of one.
What it replaces, and what that costs
The paid tool that does this job is Smart Shooter 6, from Kuvacode, sold through Tether Tools. The finished app is a one-time purchase. Its API, the part that lets your own code drive the camera, is sold separately.
From the Tether Tools product page:
Smart Shooter 6 base licence: $149.99
Smart Shooter 6 API add-on: $999.99
Total for app plus API: $1,149.98, one-time
Each additional camera: $99.99 (the page text says "$99/per additional camera"; the cart option is $99.99)
Platforms: Mac and Windows
$1,149.98 and $0 do not subtract into a saving. Smart Shooter is a finished, sold product with a forum and a support inbox. Link is a 0.1.0 library with no published package. If you never bought Smart Shooter, Darkgrade does not save you anything. It is a way to not spend $1,149.98 in the first place, if the alpha does what you need.
The fair comparison on price is libgphoto2. Darkgrade's README says libgphoto2 and its command-line tool use the same standard "under the hood." It is LGPL-2.1, has 1,416 stars, and has been around for much longer. It costs nothing. Darkgrade's pitch over it is TypeScript, browser support and a modern API, not price.
Is it still alive?
Yes, and it is very young.
The first commit on main is dated September 11, 2026, 56 days ago. There are 29 commits since, and 26 of them landed in the last 30 days. The most recent is from November 5, 2026. The GitHub repo itself was created in September 2025, so the public history looks like it was started fresh at v0.1.0.
Three author accounts made all 29 commits. Founder Kevin Schaich made 17 under two names. Cyril Engmann made 6, and they did much of the vendor-specific camera work: Sony remote zoom, Canon controls, multi-camera recording. An account called darkgrade-outpost[bot] made the other 6, including the MCP capture controls added October 30.
There are no git tags and no GitHub releases.
The install path is the problem. The README and docs say to run npm install @darkgrade/link, and the homepage says npm i @darkgrade/link. On November 6, 2026, the npm registry returned 404 for that package name. So the only way to use Link today is to clone the repo and build it with Bun, the way Studio's README does.
Studio is marked "private": true in its own package file. There is no Studio download. You build it from source.
What people say
Not much yet, and that is the finding.
No Hacker News thread mentions Darkgrade. Searches turned up DarkReader and a 2011 startup called ParkGrades, not this. Reddit is blocked from the research sandbox, so no vote counts from it are claimed. Trendshift does not list the repo. There is a Discord, linked from the site, which was not read for this entry.
At 33 stars, this entry is here because of what it is, not who is talking about it. The repo does something concrete for photographers and booth builders, and its README does a thing most camera projects skip. It says exactly which bodies were tested on real hardware, with firmware versions for most and test dates for some.
The catch
The licence is not open source, and the site says it is. The homepage calls Link an "Open-source library" and lists "open source" in its page keywords. The LICENSE file is the Fair Core License. It allows any use that isn't a "Competing Use," and names internal use, non-commercial education and research, and professional services as examples. A Competing Use is making the software available to others in a commercial product or service that substitutes for it, or for another Darkgrade product built on it that exists when the version is released, or that offers "the same or substantially similar functionality." Each version becomes Apache 2.0 on its second anniversary. To its credit, the site also says "100% of our code is licensed as fair core."
The package file disagrees with the LICENSE file. packages/link/package.json declares "license": "MIT". The LICENSE file at the root is FCL. If the package ever ships to npm with that field, tools that read licence metadata will report MIT. Go by the LICENSE file.
The licence mentions a licence key. It forbids getting around "the license key functionality in the Software." No licence-key code turned up in the repo's TypeScript files. The clause reads like room being kept for a paid tier later.
Camera support is narrower than the brand list. The README separates "exercised on physical hardware" from everything else. Seven bodies are on that list across Sony, Canon and Nikon, and some are thin: the Canon EOS R6 is "USB/PTP identification only." Fujifilm's Wi-Fi protocol "is not implemented." Panasonic, Leica and Sigma have command definitions taken from libgphoto2's tables, and the README says "None of the vendor definitions below is hardware-verified."
The proof lives in a repo you can't see. The compatibility table links to darkgrade/test-bench. That repo returned 404 on November 6, 2026, the usual result for a private repo.
Studio takes over your Mac's camera handling. macOS grabs a camera the moment it is plugged in. Studio's README says it "kills these daemons every second for the entire app lifetime." That is fine on a dedicated machine. On your everyday laptop, Image Capture and Photos likely won't see the camera while Studio is open.
My read
The bench is the product.
Anybody can wrap PTP. libgphoto2 has done it for a long time. What I've never had is a list that says this body, this firmware, this setting, tested on this date, and here's the readback. That's what Darkgrade's README has. That's the thing I'd pay attention to.
But right now it's a promise. The test bench is private. The npm package isn't there. Open the bench, ship the package, and this goes from a good README to a tool I'd put on a real shoot. If it survives that, there's a field report in it.
Credits
Maintainer: Kevin Schaich, founder of Darkgrade (X: @kevin_schaich, per his Y Combinator profile). Contributors in the window: Cyril Engmann, and the darkgrade-outpost[bot] account. Sources: the darkgrade/darkgrade repo, its README, LICENSE and package files, cloned November 6, 2026 · darkgrade.com and its roadmap page · Darkgrade's Y Combinator company page · the npm registry · ungh.cc for stars and forks · the Tether Tools Smart Shooter 6 product page · Kuvacode's Smart Shooter 6 page · the libgphoto2 repo and its COPYING file · Hacker News search via Algolia.

