{"id":27994379,"url":"https://github.com/whispphp/whisp","last_synced_at":"2026-03-08T20:38:23.826Z","repository":{"id":281235716,"uuid":"944374061","full_name":"WhispPHP/whisp","owner":"WhispPHP","description":"Pure PHP SSH server - the simplest way to build PHP SSH apps","archived":false,"fork":false,"pushed_at":"2025-10-28T23:10:56.000Z","size":2296,"stargazers_count":163,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-29T00:26:31.396Z","etag":null,"topics":["php","ssh","tui"],"latest_commit_sha":null,"homepage":"https://whispphp.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WhispPHP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-07T08:34:50.000Z","updated_at":"2025-10-28T23:10:31.000Z","dependencies_parsed_at":"2025-03-07T19:20:41.934Z","dependency_job_id":"58581500-1340-46c3-a468-aef96249cccd","html_url":"https://github.com/WhispPHP/whisp","commit_stats":null,"previous_names":["ashleyhindle/whisp","whispphp/whisp"],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/WhispPHP/whisp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhispPHP%2Fwhisp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhispPHP%2Fwhisp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhispPHP%2Fwhisp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhispPHP%2Fwhisp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WhispPHP","download_url":"https://codeload.github.com/WhispPHP/whisp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhispPHP%2Fwhisp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27669686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-11T02:00:11.302Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","ssh","tui"],"created_at":"2025-05-08T19:11:03.404Z","updated_at":"2025-12-11T20:42:58.720Z","avatar_url":"https://github.com/WhispPHP.png","language":"PHP","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"80\" height=\"80\" src=\"logo.png\"/\u003e\n  \u003ch3 align=\"center\"\u003e\u003ca href=\"https://whispphp.com\"\u003eWhisp\u003c/a\u003e\u003c/h3\u003e\n  \u003ch4 align=\"center\"\u003eYour pure* PHP SSH server ∙ the simplest \u0026 best way to build PHP SSH apps\u003c/h4\u003e\n\u003c/p\u003e\n\n![](terminal-example.gif)\n\n\u003e [!NOTE]\n\u003e Quick example: **sign our guestbook** ([See the code](https://github.com/WhispPHP/whisp.fyi/tree/main/apps))\n\u003e ```bash\n\u003e ssh guestbook@whisp.fyi\n\u003e ```\n\u003e Got a one-time secret to share? `ssh secrets@whisp.fyi`\n\nExplore the full docs at **[WhispPHP.com »](https://whispphp.com)**\n\n# Installation\n\nWe recommend using our [template project](https://github.com/whispphp/template-project) to get setup with Whisp \u0026 Laravel Prompts.\n\nYou can also add Whisp to an existing project with composer.\n\n```bash\ncomposer require whispphp/whisp\n```\n\nComing soon: [Laravel package](https://github.com/whispphp/whisp-laravel), [Laravel starter kit](https://github.com/whispphp/laravel-starter-kit), and a [Docker image](https://github.com/WhispPHP/docker-image).\n\n### Requirements\n- PHP 8.2+\n- FFI, pcntl, and libsodium modules\n\n# Usage\n\nRun the server on the port \u0026 IP you'd like, with the apps you want to make available. Each connection is forked to its own process and runs independently.\n\n```php\n\u003c?php\n\n// Setup server port \u0026 IP\n$server = new Whisp\\Server(port: 2222);\n\n// Then, add your apps in 1 of 3 ways: auto discovery, array, or string\n\n// Auto-discovery - we'll find all apps in the 'apps' directory and make them available\n$server-\u003erun();\n\n// Array\n$server-\u003erun(apps: [\n    'default' =\u003e 'full-path/howdy.php',\n    'guestbook' =\u003e 'full-path/guestbook.php',\n    'chat-{roomName}' =\u003e 'full-path/chat.php',\n]);\n\n// String - set the default script that's always ran\n$server-\u003erun('full-path/howdy.php');\n```\n\nOnce running you can test with:\n\n**Default app**\n```bash\nssh localhost -p2222\n```\n\n**Guestbook app**\n```bash\nssh guestbook@localhost -p2222\n```\n\n## Environment variables available to each app\nThese are each available as environment variables.\n\n| Variable | Description | Notes |\n|----------|-------------|------|\n| WHISP_APP | The name of the app being requested | |\n| WHISP_CLIENT_IP | The IP address of the connecting client | |\n| WHISP_USER_PUBLIC_KEY | Validated public key of the connecting user | This has been checked against their private key and can be trusted |\n| WHISP_TTY | The TTY information for the connection | e.g. /dev/ttys072 |\n| WHISP_USERNAME | The username used in the SSH connection | Unavailable when no username passed, or when the username is a valid app |\n| WHISP_COLS | Requested terminal width in chars | |\n| WHISP_ROWS | Requested terminal height | |\n| WHISP_WIDTH_PX | Requested terminal width in pixels | |\n| WHISP_HEIGHT_PX | Requested terminal height in pixels | |\n| WHISP_PARAM_{name} | Passed only when using app params, i.e. chat-{roomName} | |\n\n\n## Clients requesting apps\nThere are two ways for clients to request an available app:\n1. **Username method:** `ssh app@server` - we use the 'username' here as the app name if it matches an available app.\n    - Much cleaner, but means if you need the username for auth you can't define the app this way\n2. **Command method:** `ssh server -t app` - request an interactive shell (`-t`) with the requested `app`\n\n\n---\n\nExplore the full docs at **[WhispPHP.com »](https://whispphp.com)**, which also show how to setup Whisp to listen on port 22, start on boot, and restart on failure with systemd.\n\n# Live Examples\n\n**Play the Dinorun game** ∙ [See the code](https://github.com/WhispPHP/whisp.fyi/blob/main/apps/dinorun.php)\n```bash\nssh dinorun@whisp.fyi\n```\n\n**Share one-time secrets**\nFully encrypted, and fully secure. Only the person with the valid private SSH key can access them.\n```bash\nssh secrets@whisp.fyi\n```\n\n**View your sunrise/sunset times** ∙ [See the code](https://github.com/WhispPHP/whisp.fyi/blob/main/apps/daylight.php)\n```bash\nssh daylight@whisp.fyi\n```\n\n**Find your closest World Heritage Sites**\n```bash\nssh elec@whisp.fyi\n```\n\n---\n\n## Support \u0026 Credits\n\nThis was developed by Ashley Hindle. If you like it, please star it, share it, and let me know!\n\n- [Bluesky](https://bsky.app/profile/ashleyhindle.com)\n- [Twitter](https://twitter.com/ashleyhindle)\n- Website [https://ashleyhindle.com](https://ashleyhindle.com)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhispphp%2Fwhisp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhispphp%2Fwhisp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhispphp%2Fwhisp/lists"}