尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A blue, highly customizable web proxy built on Scramjet v2.0.67-alpha.2.
npm install
npm start # http://localhost:8080
Environment variables:
| Variable | Default | Purpose |
|---|---|---|
PORT | 8080 | Port to listen on |
HOST | 0.0.0.0 | Interface to bind |
ALLOW_LOCAL | off | Set to 1 to let the proxy reach localhost/private IPs (dev only) |
Service workers only run on https:// or localhost, so deploy it behind HTTPS.
Netlify only hosts static files, so the site deploys there but the Wisp server can't. Wisp is the WebSocket backend that actually fetches pages. You need both parts:
netlify.toml already sets the build (npm run build) and publish dir (dist).
It uses wss://longafellow.onrender.com/wisp/ by default (see public/config.js). To use a different server, set WISP_URL in
Site configuration → Environment variables and redeploy.npm install / npm start. Its /wisp/ endpoint is your WISP_URL. (It also serves the full site, so that host works on its own too.)Users can also point to a different Wisp server in Settings → Search & proxy.
Backup servers: deploy the repo to a second host (e.g. Railway or Fly.io) and set WISP_BACKUPS on Netlify
(comma-separated wss://…/wisp/ URLs). If the main server doesn't answer, Longafellow switches to a backup automatically.
Keep Render awake: free Render services sleep after 15 minutes. Point a free uptime monitor
(UptimeRobot, cron-job.org) at https://<your-service>.onrender.com/health every 10 minutes.
Import the repo. vercel.json makes Vercel build the static site (npm run build into dist), and .vercelignore
keeps it from trying to run server.js, since Vercel can't host the Wisp server. The site uses the Render Wisp server by default.
/sw.js and /config.js aren't cached long (they're sent with Cache-Control: no-cache)./wisp/ connections will fail.
Simplest is to point WISP_URL straight at the Wisp host.The Games page lists 849 HTML games from gn-math, with search, favorites and recently played.
The list is bundled at public/data/games.json, and each game file and cover loads from GitHub (raw.githubusercontent.com) when you open it, falling back to jsDelivr and then the proxy.
To refresh the list, run npm run update-games.
server.js serves the UI, the Scramjet/controller/transport bundles, and a Wisp WebSocket server at /wisp/.public/sw.js loads the Scramjet controller's service worker and routes proxied requests.public/js/proxy.js starts the Controller with an Epoxy or libcurl transport. Each browser tab gets its own Scramjet Frame.Everything is in Settings (gear icon) and is saved in the browser:
%s URL), search suggestions, ad & tracker blocking, Epoxy/libcurl transport, a custom Wisp server and backup serversPress ? in the app for all keyboard shortcuts: Alt+T new tab · Alt+W close tab · Alt+1–9 switch tabs · Ctrl+L address bar ·
/ search · Alt+G games · Alt+R random game · Alt+F fullscreen · Alt+L lock · panic key (default `).
Each site (for example lfhub.netlify.app and longlearning.netlify.app) keeps its own saves. To move them, go to
Settings → Data → Back up everything on one site, then Restore a backup on the other.
To change the code defaults, edit public/js/settings.js. To change the logo, replace public/assets/logo.png and public/favicon.png.
AGPL-3.0, the same license as Scramjet.