It's a whole lot easier if you relax the "no server" requirement. Maybe easier than you suppose. You could build the application's business logic, thinly wrap it in a Mojolicious::Lite interface, and use Mojolicious's built-in server to serve it on any port of your choosing. Don't open the port to the outside world at your firewall, and restrict (using a route bridge, or "under" in Mojolicious::Lite) the client's IP to just the local machine if outside access is of concern.
Done right, at the command line you would type, "./mymojo_app.pl daemon" to start it up on port 3000, for example.