Your API, heard straight from the code.

Open a project folder. Sonar finds every route, sends the login cookie, token and CSRF header your code expects, and when a request fails it shows you the line that sent the error. Free for macOS.

macOS ยท Apple Silicon

ping #1

Send it. Listen for the echo.

This is how Sonar behaves on a small Next.js project. The routes, the login cookie and the error lines all come from the code.

kennel-apiNext.jscookie jar: empty
GET{{baseUrl}}/api/capsules
app/api/capsules/route.ts:5 ยท ๐Ÿ”’ cookie: session ยท via requireUser
Press Send. You haven't logged in yet, so expect trouble.
Send that one first. I'll tell you where it bounces.
ping #2

What Sonar hears in your project

Every route, no collection

Next.js App and Pages Router, Express, Hono and Fastify. TypeScript or JavaScript. Mounted routers get their prefixes.

Bodies from your schemas

A sample body built from the zod schema the route parses, plus the query params and headers it reads.

Auth, handled

One cookie jar per environment. A login that returns a token fills {{token}} in the Keychain and sends Bearer where it's read.

CSRF without the dance

Double-submit cookies, token endpoints and next-auth. If the token goes stale, Sonar fetches a fresh one and tries once more.

Errors that point home

A 401 from requireUser, a 404 from a missing record, a 400 from a typo: Sonar shows the line, the if that led there, and opens it in your editor.

Stays on your Mac

Requests go from your Mac to your server, nowhere else. Saved requests sit in .sonar/ so your team can commit them; secrets stay in the Keychain.

ping #3

Let the bat out.

Free, for macOS on Apple Silicon.

One command recommended

Paste it into Terminal. No "unidentified developer" warning, and the same command updates Sonar later.

curl -fsSL https://sonar.parieaw.cloud/install.sh | bash

It downloads the release, checks its sha512 and copies Sonar.app into Applications. Read the script first if you like.

Or the DMG

Download Sonar (.dmg)

Open it and drag Sonar into Applications. Sonar isn't signed by Apple yet, so macOS blocks the first launch. Run this once, or use System Settings โ†’ Privacy & Security โ†’ Open Anyway:

xattr -dr com.apple.quarantine /Applications/Sonar.app