AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Every dev server running on your Mac, in your menu bar.
Translation pending
Developer toolsSwift · HTMLGitHub @quaydeckOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Every dev server running on your Mac, in your menu bar.
Which ports are listening, which project each one belongs to, which branch it is on,
which of them you forgot about three days ago, and one click to stop any of them.
Free, open source, no account, no telemetry.
Quaydeck watches the listening TCP ports on your Mac and works out what is behind each
one.Read the full README ↗Every dev server running on your Mac, in your menu bar.
Which ports are listening, which project each one belongs to, which branch it is on, which of them you forgot about three days ago, and one click to stop any of them.
Free, open source, no account, no telemetry.
Quaydeck watches the listening TCP ports on your Mac and works out what is behind each one.
tsc --watch pegging a core with no server attached.~/Library/Application Support, is not an alarm.com.docker.backend. One row per container,
named after its compose project, with its published ports and health. Stopping one
stops that container, never Docker itself.Everything it knows, it reads from your own Mac: the kernel's socket and process tables
(the same data lsof and ps show, read directly instead of by starting them), and
docker ps when Docker is running. A scan costs about 15 ms of CPU, every 20 seconds
while the menu is closed, and stops while your screens sleep.
Download the latest DMG from Releases, or build it yourself:
git clone https://github.com/quaydeck/quaydeck
cd quaydeck
./Scripts/build-app.sh --install
Requires macOS 13 or later. Universal, Apple Silicon and Intel.
Quaydeck makes no network requests except HTTP GETs to localhost ports on your own
machine, to read the page title and status code of your own servers. There is no
account, no analytics, no crash reporting, no phone-home of any kind. Everything it
remembers lives in UserDefaults on your Mac.
Full detail in PRIVACY.md.
Quaydeck reads the system process table and signals processes it did not start. The App Sandbox forbids both, and the App Store requires the sandbox. So it is distributed directly, signed with a Developer ID and notarised by Apple.
Everything in this repository is free, permanently, under the MIT licence. If a paid tier ever arrives it will be for capabilities that do not exist here yet, and it will never remove something that was free.
Sources/
QuaydeckCore/ scanning, classification, advice. No AppKit, no SwiftUI.
QuaydeckUI/ the menu, settings, first run. Everything that touches AppKit.
Quaydeck/ app entry, Sparkle, composition root.
Tests/
QuaydeckCoreTests/
Fixtures/ recorded lsof and ps output
The important seam is CommandRunner. On a real Mac, sockets and processes come straight
from the kernel (KernelSource); give the inventory a recorded runner instead and the same
pipeline reads lsof and ps output, so it can be driven entirely from recordings:
let inventory = PortInventory(
runner: FixtureRunner([("lsof", "-iTCP", recordedOutput), ...]),
fileSystem: StubFileSystem(directories: [...], files: [...]),
home: "/Users/dev"
)
let snapshot = inventory.snapshot()
This is why a bug report is cheap to fix. See below.
The classifier is the part most likely to be wrong on a machine that is not the author's. If Quaydeck labels something incorrectly, paste the output of:
lsof -nP -iTCP -sTCP:LISTEN -FpcPn
ps -ww -o pid=,ppid=,etime=,pcpu=,rss=,args= -p <the pid>
into an issue. That output becomes a fixture and a failing test, and the fix is verified rather than guessed.
swift build # build
swift test # 63 tests, no system dependency, runs in under a second
./Scripts/build-app.sh --install
MIT. See LICENSE.
Quaydeck grew out of Poort, a private tool that only worked on one person's Mac.