Sno Station
Sno Station is your agents' workstation: open-source software that turns the AI agents you already run into one squad on your own machine. Two heads are better than one, and they get better with every
Games that play themselves on your TRMNL e-ink display. Desk Crawler is a free office RPG where your hero takes on a new adventure every 15 minutes, on the screen on your desk.
PluginsTypeScript · JavaScriptGitHub @barrymichaeldoyleOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Desk Crawler: an office RPG that plays itself on your TRMNL e-ink display. Companion at trmnlgames.com; join the waiting list for the marketplace launch.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Install Desk Crawler on TRMNL · Play at trmnlgames.com
Also by the same author: Formula 1 Race Weekend, a TRMNL plugin that follows the current F1 weekend with sessions, weather, grid and results, powered by GrandPrixPicks.com.
A passive multiplayer office RPG for your desk. A hero explores every 15 minutes, finds equipment, survives mishaps, and climbs a global leaderboard. Built exclusively for TRMNL: install the plugin to start your hero, watch the story on e-ink, and use the companion website for occasional decisions.Read the full README ↗Install Desk Crawler on TRMNL · Play at trmnlgames.com
Also by the same author: Formula 1 Race Weekend, a TRMNL plugin that follows the current F1 weekend with sessions, weather, grid and results, powered by GrandPrixPicks.com.
A passive multiplayer office RPG for your desk. A hero explores every 15 minutes, finds equipment, survives mishaps, and climbs a global leaderboard. Built exclusively for TRMNL: install the plugin to start your hero, watch the story on e-ink, and use the companion website for occasional decisions.
Phase: live on the TRMNL marketplace. Plugin 564 was submitted to TRMNL on 2026-10-07 and is listed at https://trmnl.com/integrations/desk-crawler. The companion, Convex backend and TRMNL integration are live, with production on content v12 (stances, potion pouch, merchant, decisions, effects, affixes, epic gear, desk raids, the to-do list, gold-only bag and pouch ladders, and from v12 the career ladder with level-gated unlocks) and device template v52. See the roadmap for what comes next. See implementation status and release checks for verified behavior and remaining gates. Run pnpm install then pnpm check and pnpm balance.
Confirmed on 2026-10-03:
Start with the documentation index, MVP definition, decisions and open questions, and agent work packages.
Desk Crawler now runs on the shared TRMNL Games platform at trmnlgames.com. The monorepo/domain migration is complete; the migration plan records the rollout and remaining review preparation.
The first release includes all four TRMNL layouts because Third Party marketplace publication requires them. The canonical flat player JSON remains a separate API contract; the marketplace endpoint returns markup plus merge variables.
Game constants, targets, and estimates are planning proposals, not measured outcomes. Platform facts have references in research notes. Future releases are direction, not instructions to build every feature now.
pnpm install
cp .env.example .env.local # then fill in values (see comments)
npx convex dev # Convex backend, schema and functions
pnpm dev # web app on http://localhost:3000
pnpm check # typecheck + all tests
pnpm lint:trmnl:setup # install the pinned official linter (once)
pnpm lint:trmnl # lint all four TRMNL layouts
pnpm crosscheck:trmnl # compare preview Liquid (liquidjs) with Ruby Liquid via trmnlp
pnpm balance # balance harness (see docs/evidence/balance.md)
pnpm tsx tools/trmnl/preview.ts # local TRMNL layout previews in .previews/
# Interactive preview gallery (dev server only): http://localhost:3000/dev/desk-crawler
# every scenario × OG/X/BWRY × full/half/side/quarter × landscape/portrait
TRMNL lint uses the official trmnlp lint command from trmnl_preview 0.27.0. It requires Ruby 4+ and Bundler; if your default Ruby is older, the wrapper uses mise exec [email protected] (install it with mise install [email protected]). Dependencies stay in ignored .trmnl-lint/, and setup uses the committed Gemfile lock. The wrapper extracts the current TypeScript templates into a temporary directory, uses the preview's pinned framework version, and runs every official rule. It then checks that every static class in the templates exists in that framework version's CSS (downloaded once into .trmnl-lint/framework/), because the official rules accept classes that do nothing, such as mt--[1px]. For JSON output, run pnpm exec tsx tools/trmnl/lint.ts --json. Listing name/description are mirrored in tools/trmnl/lint/settings.yml; update them when the listing changes.
The previews and the companion's live preview render Liquid with liquidjs, while TRMNL renders with Ruby Liquid. pnpm crosscheck:trmnl uses the same pinned bundle to render every preview fixture set (each state and layout, with and without a keepsake code) through the Liquid environment trmnlp builds: Ruby Liquid plus TRMNL's filters, in UTC, with strict filters. It fails on any difference from liquidjs, including a filter that liquidjs supports but TRMNL lacks, and writes both outputs to .previews/crosscheck/. It compares markup only and does not inject trmnlp's simulated trmnl object, since third-party markup only receives merge variables. Run it after template changes alongside lint.
The separate TRMNL lint workflow runs for relevant pull requests and pushes to main. pnpm check remains the Node-only typecheck/test gate used by Cloudflare builds. Lint complements the required layout previews and live render checks.
What is built and what remains: implementation status.
Cloudflare Workers Builds deploys production on every push to main:
pnpm build:deploy (typecheck, tests, then convex deploy to exciting-cormorant-948, which runs pnpm build once the backend is live). Deploy command: pnpm deploy:web (companion on trmnlgames.com).CONVEX_DEPLOY_KEY. Non-production branch builds are off, because any build deploys production Convex..env.production. Server secrets live on the platforms: Convex env (npx convex env set --prod ...) and Worker secrets (npx wrangler secret put ...: CLERK_SECRET_KEY, INSTALL_FLOW_KEY).| Path | Purpose |
|---|---|
LICENSE | MIT for code; artwork, authored narrative content and the name/logo reserved |
docs/ | Product, gameplay, backend, API, UI, operations, QA, roadmap, and handoff plans |
docs/fixtures/ | Illustrative contract examples, not a live backend |
.agents/skills/trmnl/ | Official TRMNL agent skill and its upstream references |
memory/ | Project decisions recorded for continuity |
Read AGENTS.md before taking a work package.
Also useful: TRMNL player experience, ranking, inventory and the implementation evidence checklist. Earlier planning reviews are in docs/history. Tuning and technical evidence remain open.