SSH server middleware framework
Build TUIs anyone can ssh user@host to run. Leans on the host's OpenSSH daemon (ForceCommand) rather than re-implementing the SSH wire protocol. sshd handles auth, ciphers, host keys, fail2ban, audit logs.
composer require candycore/candy-wish
// /opt/wish/server.php โ invoked by sshd ForceCommand
require '/opt/wish/vendor/autoload.php';
use CandyCore\Wish\Server;
use CandyCore\Wish\Middleware\{Logger, Auth, RateLimit, BubbleTea};
Server::new()
->use(new Logger('/var/log/wish.jsonl'))
->use(new RateLimit(
'/var/lib/wish/buckets.json',
burst: 5,
ratePerSec: 0.5,
))
->use(new Auth(users: ['alice', 'bob']))
->use(new BubbleTea(fn($session) => new MyApp($session)))
->serve();
Middleware::handle($session, $next).