A Linux server on your own computer, in a tab.
Sonda Virtual Machine, in the title bar: as many small Linux servers as you want, each with a name, its processors, its memory and its disk, each a tab with a console. Install what an API needs from a menu — a language, a database set up and reachable, a web server — run the API there, and call it from any request at the machine's address. Nothing is downloaded to make a machine: the Linux is inside Sonda.
At a glance
A lab, not a cloud.
Where an API under development used to run on your own system, or on a server reached through a tunnel, it can run here: a small Linux of its own, a few megabytes on the disk, started and stopped from the tab.
Made in a dialog
A name, processors and memory on sliders, the disk's size. Create — nothing starts, no disk is made until the first start, and the first start takes seconds. A machine that exists keeps everything installed in it from one start to the next, until Reset gives it a new disk or Remove takes it from the computer.
The console
The machine's own, in the tab, the same terminal Sonda uses for its shell. Leave the tab and come back: what the machine said meanwhile is there, once, nothing drawn twice. A stopped machine shows its name and its three verbs where the console would be.
The address
Each machine has a network card on the computer's private network: an address this computer reaches and nothing outside it does. A request to it works like one to localhost. Every port something listens on in the machine is a button above the console — New request in a project, Open in the browser, Copy the address.
Nothing fetched for the machine
The kernel, the first file system and the disk a machine starts from are inside the build, made from Alpine's own release files — every sum and every package's license written down beside them. What the machine itself reaches out to, when you install something in it, is what you asked for.
Files either way
On a Mac, a sheet with a folder of this computer beside a folder of the machine: copy a project in, copy a log out, make a folder, delete in the machine. What the machine sends back is unpacked under the folder you chose and nowhere else.
Read as a stranger
Everything that comes from inside a machine — its address, what it can install, what listens — is held to a shape before Sonda believes it. A machine is a computer you run programs on; the window treats it as one.
What an API needs, from a menu.
One command of the machine's own is typed in the console for each — sonda install postgres — and the console shows every step it takes. Nothing is installed out of sight, and the machine says in seconds when it cannot reach out, with the VPN and the firewall named as the usual reasons.
Languages
Node.js and npm, Python 3 and pip, the .NET 10 SDK, Go, PHP 8.5, OpenJDK 21, Ruby 3.4 with Bundler, Rust with Cargo, Deno 2.
Databases, set up
PostgreSQL 18, MariaDB 11 and Redis 8 are made, started, opened to the computer and given a password of their own — twenty characters made in the machine, kept in the machine and nowhere else; How to connect says it in the console, with the connection string. MongoDB 8 comes as MongoDB's own build in a container, with a yes before the download. SQLite as the command.
Servers and tools
nginx and Apache. Build tools and git, for the packages that build their own native part. Network tools: htop, curl, wget, dig, ss, tcpdump, nmap, nc, socat, mtr, jq, openssl.
Services
A database or a web server is a service of the machine: a button with a dot, its port, Start, Stop, How to connect. A service that was started starts again with the machine; one that was stopped stays stopped; before the machine turns off, every running service is asked to end the way it wants to be asked.
Listening
Your own API, once it runs, is a button too, the moment it listens — with a word when it listens on 127.0.0.1 only, which is why this computer could not reach it, and what to change.
The machine's own list
What can be installed, what installing means, what starting a service does: all of it is one script inside the machine, not a setting of Sonda's. Whether a thing is installed is the machine's own reading of itself.
A whole deployment, one click, with its project.
Under Samples in the Install menu. A dialog says what will be done; Install does it, and the console shows every step.
In the machine
A small shop, deployed the way an API is deployed on a server: a Node.js API with a SQLite database — Node's own, nothing from npm — a website that calls it, and nginx in front, serving the site on port 80 and passing /api to the API. Products, orders, stock that goes down with an order in one transaction and comes back when it is cancelled, stats. The API is one file to read and change, the website another.
In Sonda
A project in the workspace, this computer's own: a variable baseUrl for the machine's address and a request for every route — health, stats, the website, products listed, searched, added, changed and removed, orders listed, placed and cancelled — the bodies filled in. Send one from Sonda while the page is open in a browser and watch the stock move.
As a service
The API and nginx are services like the others: Start, Stop, How to connect, and a start with the machine. Stop the service, edit server.js, start it: the change is live. Install the sample again and the files are laid out anew; the database is not touched.
Two systems, the same tab.
What differs between them, the tab says.
Apple silicon Macs
Apple's Virtualization framework, part of macOS 12 and later: a machine of its own, with the processors, the memory and the disk the dialog gave it. Files pass through two folders the machine is given at every start.
Windows PCs
WSL 2, Windows' own way to run Linux: each machine is a distribution of Sonda's own, made from Alpine's files in the build and talked to through wsl.exe. WSL's processors, memory and network are shared by every Linux on the PC, so the dialog asks for a name alone, and two machines cannot listen on the same port. Where WSL is not on the PC yet, Sonda says the one command that installs it and installs nothing itself.