01 / Abstract
Living rhythm. Personal best.
SqueekRunner is a free, client-first browser endless runner. The player controls a hamster: jumping over crates, collecting golden nuts, and trying to run farther. World speed responds to the RPM of Squeekchain's real hamster wheel, while newly confirmed Squeek block heights drop bonus nuts.
The game remains fully playable when the wheel is idle or telemetry is unavailable. Starting a casual run requires no account, wallet, or installation. For competitive players, an optional server-verified ranked mode allows runners to qualify for an application with manual review for the free testnet NFT whitelist. This is an application with manual review, not a raffle. This document describes our game; the underlying network design is documented in the Squeekchain whitepaper (in active development).
02 / Concept
Feeling data in a jump.
A bare RPM reading tells a player very little on its own. But when the wheel speeds up and crates rush toward you faster, the link to the physical world becomes palpable. SqueekRunner turns telemetry into decisions: when to jump, where to use a double jump, and whether to risk a jump for a nut.
The core loop remains classic arcade: run → crash → score → one more try. Telemetry modulates the tempo within that loop. Baseline speed keeps the full game intact when the wheel is stationary; a separate Practice mode lets players explore the mechanics without waiting for real-world motion or a new block.
03 / Context
Behind the wheel.
According to the Squeekchain whitepaper (in active development), Squeekchain is a hamster-powered proof-of-work toychain on Ethereum. The physical WHEELY9000 wheel counts magnet passes across a sensor. One pass equals one unit of work. This is physical wheel work, not CPU hash computation. Work is aggregated into 10-minute rounds, submitted via signed Oracle/Reporter pathways, and settled by the Core contract on Ethereum to seal Squeek blocks.
RPM is instantaneous wheel tempo. A Squeek block is the result of accumulated work meeting target difficulty. A high RPM therefore does not mean an immediate block confirmation. For the game, these two signals are independent: RPM drives world speed, while confirmed height drives golden nuts.
The Squeekchain ecosystem includes $SQK (capped at 2.1 billion tokens, issued via halving schedules into Staking) and a collection of 9,999 Genesis Squeeks across levels 1–10. Depositing Squeeks and staking $SQK provides account power and a share of network rewards. SqueekRunner only reads public telemetry; staking participation, NFT ownership, and token transactions are not required to play. In-game score and nuts are not SQK.
Meet Squeektoshi on the wheel
The living engine of Squeekchain is Squeektoshi, a male Syrian hamster who runs on the physical WHEELY9000 wheel. Squeektoshi runs primarily at night (UTC), and his livestream (sepolia.squeekchain.com/#live) typically broadcasts during UTC evening and night hours. During daytime hours, the wheel usually rests — during which SqueekRunner continues smoothly at balanced baseline speed.
How SqueekRunner supports Squeekchain
SqueekRunner is crafted by builders and passionate fans of the Squeekchain ecosystem, actively participating in the Squeekchain Genesis Code Lane. Our integration runs deep across four core dimensions:
- RPM drives game velocity: Real-time wheel rotation from the public status API (
https://api.squeekchain.com/v1/status) scales in-game run speed from 1.0× at 0 RPM up to 2.7× at peak speed (~98.3 RPM). - Squeek blocks drop golden nuts: Each newly sealed block confirmed on Ethereum Sepolia triggers a lucky golden nut spawn in-game, granting +150 points, +5 double jumps and a collision shield that lasts until it absorbs one hit.
- Authoritative replay verification: Ranked competitive replays are verified by our companion server, which samples the same public Squeekchain timeline every ~10 seconds and re-simulates physics tick-by-tick against authoritative wheel history.
- Whitelist values ecosystem participation: Manual evaluation of applications for the free testnet SqueekRunner Hamsters NFT whitelist recognizes player activity across Squeekchain, including holding Squeeks, staking, and $SQK on-chain history.
Facts verified against the Squeekchain documentation and technical inspection on November 8, 2026. Verified deployment: Sepolia, chain ID 11155111, installation sepolia-core-sepolia-20261103. SqueekRunner is an independent community project built on Squeekchain. Not affiliated with or endorsed by the Squeekchain team. Sources →
04 / Gameplay mechanics
Faster wheel — faster world.
The hamster stays near the left edge as the world scrolls forward. Space, ↑, click, or tap initiates a jump; a second press in midair triggers a double jump. Crashing into a crate without a shield ends the run. Pressing Space or tapping on the score screen immediately starts a new attempt.
target = base(distance) × multiplier(RPM)
base(d) = 290 + 110 × clamp(d / 1800, 0, 1)
multiplier(r) = 1 + 1.7 × clamp(r / 98.316, 0, 1)
Δt = 1/60 s; α = 11834 / 1000000 ≈ 1 − exp(−Δt / 1.4)
speed ← speed + trunc((target − speed) × α)
At 0 RPM the multiplier is 1. At the historically observed peak near 98.3 RPM it reaches 2.7 and caps there. This is a game-balance calibration, not a physiological limit of the hamster. Fixed-step smoothing approximates a 1.4-second time constant; when data drops out, speed glides smoothly back to baseline. The speed update above uses integer milli-pixels per second.
Gameplay advances at 60 fixed ticks per second. Jump inputs take effect on the next tick (up to 16.67 ms later), obstacle intervals round up to ticks, and pauses freeze simulation time. Runs end on collision or after 30 minutes of simulation. Integer physics and seeded obstacle randomness let the same recorded inputs and wheel samples deterministically reproduce the same score. In casual play, replays can be inspected locally; in ranked play, server-issued sessions, dynamic chunked map delivery, real-time duration enforcement, and independent server-side telemetry validation secure qualifications for the whitelist application.
Difficulty increases with distance: baseline speed ramps up and obstacle gaps tighten. Score is the integer floor of game distance multiplied by 10, plus collected bonuses. Game metres are not the measured physical distance of the real hamster.
| Parameter | Value |
|---|---|
| Baseline speed → maximum | 290 → 400 px/s |
| Base ramp distance | 1800 game m |
| Calibration peak | 98.316 RPM |
| Maximum multiplier | 2.7× |
| EMA time constant | 1.4 s |
| Gravity | 1800 px/s² |
| Initial / air jump | -630 / -550 px/s |
| Input buffer / coyote time | 120 / 90 ms |
| First obstacle | After 2.4 s |
| Obstacle interval | 1.9 → 1.15 s, plus 0–0.5 s |
| Obstacle ramp distance | 1400 game m |
| Scale / points per metre | 24 px/m; 10 pts/m |
| Double jumps per run | 15 at the start; single jumps are unlimited |
| Golden nut | +150 points; +5 double jumps; a shield held until it absorbs one hit (never stacks) |
| Post-shield invulnerability | 550 ms |
The shield absorbs one collision. Pause is toggled with P or Escape; hiding the browser tab also pauses the run. Press Space or tap to resume.
05 / Data states
Quiet is part of the game.
- LIVE. Fresh, healthy telemetry with RPM > 0. The wheel accelerates the world.
- WHEEL IDLE. Fresh, healthy telemetry with RPM = 0. Normal baseline speed.
- NO DATA. Stale, null measurement, COUNTER_FAULT, unavailable, malformed response, network error, or expired read. Target speed glides back to baseline. Numeric RPM is hidden; retained block height is explicitly labeled as last known.
measurement.rpmMilli / 1000 converts milli-RPM into RPM. coreStatus: ACTIVE can occur even at 0 RPM. These states describe the hardware and data pipeline, not the sleep or health of the animal.
Practice mode (formerly DEMO) runs a standalone simulator: a 26-second cycle with the first 6 seconds idle, followed by a smooth rise and fall in RPM. Block height increments every 16 seconds. The game displays a prominent DEMO badge, records are isolated from LIVE, and no network requests are sent to Squeekchain.
06 / Confirmed blocks
New block. One golden nut.
Bonuses depend solely on builder.anchor.blockHeight. Heights are transmitted as strings and parsed as BigInt to prevent precision loss beyond JavaScript's safe integer range.
- The first valid confirmed anchor establishes a baseline without a reward.
- An increase of one or more blocks spawns one nut and a "Squeek block #N!" notice. Multi-block jumps never cascade into a flood of rewards.
- An
installationIdchange or height regression resets the baseline without a bonus; any uncollected previous nut is removed. builder.projected.blockHeightis optimistic and provisional. It is shown only as a visual hint and never spawns nuts.
At most one uncollected nut exists on screen at a time. Menu and pause periods do not accumulate rewards; the first response after resuming establishes a new baseline. Expired cached data cannot seed a new run's baseline. Previously collected points and shields are not rolled back on a chain reset.
Wheel measurement freshness and confirmed anchor settlement are decoupled: a fresh valid HTTP response can advance block height even while RPM is stale. Stale RPM never accelerates the game. Unconfirmed projections never participate in rewards.
07 / Architecture
From sensor to frame.
The application is a client-first static bundle built with TypeScript, Vite, and Phaser. Landing, game, whitelist portal, and this document compile as four distinct HTML pages. The landing page loads a small telemetry widget; the game engine is loaded only on the game page. The whitepaper is fully readable without JavaScript.
Reads use GET https://api.squeekchain.com/v1/status with no query parameters and credentials: 'omit'. The verified read API returns CORS Access-Control-Allow-Origin: *, so no custom proxy or backend server is needed for casual play. The parser validates schema versions, enums, timestamps, milli-RPM, and uint64 heights; malformed responses fall back to NO DATA.
Subsequent polls are scheduled 1500 ms after the previous request completes. Timeout is 8000 ms. Errors trigger exponential backoff up to 60000 ms; longer Retry-After directives are honored. Per technical inspection, the status API rate limit is 30 requests/s per IP with a burst of 60; exceeding it yields HTTP 429. This is an external limit, not a service guarantee.
A successful read expires after 12000 ms. Measurement freshness and timestamps are validated independently: capped at 120000 ms or less if the API reports a lower staleAfterSeconds. Polling pauses while the tab is hidden; aborted requests never publish late responses.
The source interface is shared between LIVE and DEMO. Parser, block detector, speed calculations, record storage, and widget logic are unit-tested independently of Phaser. Scene subscriptions are torn down on both shutdown and destroy. No external CDN fonts, trackers, or analytics scripts are loaded; the only network request in the application during casual play is the Squeekchain read in LIVE mode.
For casual play and local scoreboards, SqueekRunner operates entirely client-side and serverless. To support competitive ranked qualification and whitelist applications, an optional companion server deployed on Cloudflare Workers and Cloudflare D1 provides telemetry archival and deterministic replay verification. A Durable Object (TelemetryCollector) polls Squeekchain's /v1/status endpoint approximately every 10 seconds, retaining verified historical RPM and block heights in D1 for 48 hours. In ranked mode, the server delivers map chunks progressively and feeds this delayed timeline to both the client and the verifier, re-simulating the player's inputs at 60 Hz to guarantee fair qualification. If the application server is unavailable, SqueekRunner continues to run seamlessly as a standalone client.
08 / Whitelist application
Earn your place. Manual review.
Alongside casual play, SqueekRunner hosts a whitelist application for SqueekRunner Hamsters, an experimental collection of 1,000 NFTs on Ethereum Sepolia testnet. Minting is completely free, requiring only testnet gas obtained from public faucets. The collection is partitioned into 700 game whitelist spots via applications (70%), 200 Twitter/X and community giveaway spots (20%), and 100 team and treasury reserve spots (10%). This is an application process with manual review by the team, not a raffle.
The ranked qualification & application pipeline
Qualifying for the whitelist requires demonstrating genuine skill on the wheel without financial barriers, wallet connections, or gas costs:
- Session initialization & chunked map delivery. When a player initiates a ranked run, the client requests a single-use session from the verification server (
POST /v1/session). Protected by Cloudflare Turnstile, the server issues a unique session seed. Instead of sending the full level layout, the server delivers map segments (obstacles and coins) in progressive chunks as the run unfolds. Because the client cannot predict upcoming chunks, offline bots cannot pre-compute optimal jump paths ahead of time. - Synchronized telemetry timeline. In ranked mode, the game receives wheel RPM and confirmed block heights from
GET /v1/telemetrywith a 5-second broadcast delay. This ensures the client and the server verifier observe an identical historical sequence of wheel events. Ranked runs cannot be paused and must be completed in real time. - Qualification requirements (100k + 10/10 coins). To qualify for an application, a run must achieve a server-verified score of ≥ 100,000 points AND collect all 10 / 10 coins. Coins float at double-jump height, randomly placed on the way to 100,000 points (the first 10,000 metres). Beyond that point, no further coins appear. If even a single coin is missed, the run does not qualify for an application.
- Deterministic re-simulation. Upon run completion, the client submits the recorded input ticks (
POST /v1/run). The server executes the exact 60 Hz integer simulation engine (squeek-1), applying its authoritative telemetry, block history, and chunk layout while discarding client-supplied RPM or nut claims. The server verifies that the client score matches the re-simulation and confirms the run took its genuine real-world duration (rejecting runs submitted faster than simulation time or more than 15 seconds late). - Application submission (within 24 hours, no wallet connection). After completing a qualified run, a runner unlocks the "Apply for the whitelist" button directing to
/whitelist/. The applicant manually pastes their Ethereum Sepolia address (no wallet connection is required, and no cryptographic signatures are requested). The runner enters their X handle and clicks "Post on X", which generates a draft post with a unique application code and score. Once posted, the runner pastes the post URL. The server verifies the post via public X oEmbed (confirming the post exists, belongs to the handle, and includes the unique code). If X verification is temporarily unavailable, the application can still be submitted for manual verification. Applications must be submitted within 24 hours of the qualifying run. Strictly one address and one X account = one application.
Manual review criteria
The core team reviews submitted applications manually against transparent, published criteria. This is an application process with human evaluation, not a raffle. The review evaluates:
- Qualified: server-verified run of 100,000+ points with all 10 coins.
- A real, active X account that published the application post.
- The Sepolia address has on-chain history (not a fresh empty wallet).
- Plus: activity on Squeekchain (Squeeks, $SQK).
- Obvious farms are rejected (clusters of addresses, accounts or networks; scripted input).
- The team's decision is final.
Why manual review (not a raffle)
This is not a lottery and there is no random draw. Automated draws and lotteries are notoriously vulnerable to Sybil attacks: bot operators can generate thousands of burner wallets and route traffic through residential proxy networks. By combining dynamic chunked map delivery, real-time input rhythm verification, and manual inspection of on-chain account history, manual review provides honest, robust protection against automated bot clusters that cannot be bypassed with cheap disposable addresses or automated scripts.
Privacy and data retention
We respect player privacy. The server stores only the applicant's Sepolia address, X handle, application post URL, a salted one-way hash of the IP address (never the raw IP address), and raw run telemetry (input timing and rhythm). Address activity signals are evaluated exclusively from publicly verifiable blockchain data. No personal identities, email addresses, or off-chain tracking profiles are stored.
Application status & allocation
Applications open at launch — dates will be announced on X. The 1,000 SqueekRunner Hamsters are allocated as 700 game whitelist spots (applications) (70%), 200 Twitter/X community spots (20%), and 100 team and treasury spots (10%). Approved addresses are published to an OpenZeppelin Merkle tree, allowing recipients to execute a free mint on Ethereum Sepolia testnet.
09 / Honesty and limitations
Just a game. No financial promises.
- Local records remain local. Casual runs and personal bests persist in localStorage, globally and keyed by starting block, isolated between LIVE and DEMO. The latest 100 block records are retained. If the starting block is unknown, the first confirmed height seen during the run is pinned. Local storage is client-editable; casual scores are not verifiable proofs of fair play and do not sync across devices.
- Anti-cheat and ranked verification. To protect the whitelist application process, ranked runs are validated by an independent server. The server issues a one-time session seed, delivers map chunks progressively, feeds an authoritative 5-second delayed telemetry stream, and re-simulates all inputs tick-by-tick at 60 Hz with integer physics. Client-reported RPM and nut spawns are discarded. Ranked runs cannot be paused, must match elapsed server wall-clock time, and require Cloudflare Turnstile. Each applicant is limited to one address and one X account. No wallet connection or cryptographic signatures are required on the site.
- Residual cheating risks (honest disclosure). Because the client receives map chunks as the run progresses, offline pre-computation of the entire level is impossible. However, an automated bot could still attempt to calculate jump inputs in real time for visible obstacles. Cloudflare Turnstile, server-side replay physics, wall-clock duration enforcement, input rhythm analysis, IP-hash cluster detection, on-chain address history vetting, and manual team review make automated farming operationally and economically expensive, but no software defense can make bot creation mathematically impossible. The organizers reserve the right to audit application logs and reject obvious bot clusters or automated Sybil farming operations. The team's decision is final.
- SqueekRunner Hamsters testnet collection. The SqueekRunner Hamsters collection consists of exactly 1,000 NFTs deployed exclusively on Ethereum Sepolia testnet. Minting is free (requiring only free testnet gas from public faucets). The collection is allocated as 700 game whitelist spots via applications (70%), 200 Twitter/X and community giveaway spots (20%), and 100 team and treasury spots (10%). This is an application process with manual review, not a raffle.
- Today: free testnet collectibles. SqueekRunner Hamsters NFTs on Sepolia testnet carry zero monetary value and represent no financial asset or equity. Minting on testnet is free and requires only faucet gas. A coin ($HMSTR) and further utility are planned for the future — see Roadmap. In-game score and golden nuts are arcade mechanics, not SQK or currency.
- The API may go quiet. Fresh measurements are not guaranteed on every poll. Squeekchain work settlement proceeds independently from instantaneous RPM; network latency, counter faults, and installation changes can occur. Baseline speed preserves gameplay during telemetry outages.
- Varying tempo means varying runs. LIVE runs occur at whatever RPM the wheel provides. A personal best is an arcade milestone, not a standardized esport competition.
- Storage may be restricted. If localStorage is unavailable, casual high scores persist only in page memory for the current session. Landscape orientation is recommended for mobile players.
10 / Roadmap
Where we can run next: the hamster roadmap. Plans, not promises
The free testnet mint on Sepolia represents our starting line. SqueekRunner is an evolving experiment, and the team intends to care for the collection and expand its utility across successive development phases. All roadmap points below are planned directions, subject to change.
1. Mainnet migration with Squeekchain
While the initial collection of 1,000 SqueekRunner Hamsters mints exclusively on the Ethereum Sepolia testnet, Squeekchain itself is getting ready for its mainnet launch. When Squeekchain launches on mainnet, the collection is planned to move there with it. The exact migration mechanism, smart contract architecture, and migration timeline will be announced later as mainnet preparations proceed.
2. The $HMSTR coin
$HMSTR is the planned coin of the SqueekRunner ecosystem. Holders of SqueekRunner Hamster NFTs will receive an allocation from the total supply of $HMSTR. Complete tokenomics, including total supply, distribution allocations, and launch dates, will be announced later. No premature figures or speculative schedules are published.
3. The Wheel (NFT locking)
Hamsters are made to run. SqueekRunner will introduce The Wheel, an interactive NFT locking feature (staking) where holders can commit their hamsters to spin the wheel on scheduled shifts. Four shift durations will be offered:
- 1 week — A quick sprint shift on the wheel providing baseline perks.
- 1 month — A steady pacing shift with enhanced perks as momentum builds.
- 3 months — A seasonal shift offering major perks for sustained commitment.
- 1 year — The elite shift on the wheel, delivering the highest tier of perks.
The core rule of The Wheel is straightforward: the longer the shift, the bigger the perks. Specific perks, utility multipliers, and release mechanics will be announced later.
4. Community first: fees and royalties
The economic alignment of SqueekRunner is centered on its players. The team takes no trading fees and no royalties for itself. They flow back to the community — the treasury and the hamsters on the wheel.
5. Ongoing collection utility
SqueekRunner Hamsters are designed to be active game participants, not static artwork. The team is committed to continuous collection care, exploring dynamic cosmetic perks, competitive events, and ecosystem utility as the game matures.
Additional gameplay directions
- Public verified leaderboard. An authenticated online scoreboard showcasing top scores from verified ranked replays, letting the community celebrate legitimate high-distance runs.
- Holder cosmetic skins. Holders of SqueekRunner Hamster NFTs may unlock alternative in-game hamster skins, accessories, or visual themes during runs.
- Community mods and challenges. Custom obstacle packs, fixed-condition time trials, and alternative wheel telemetry modes while preserving the living connection to Squeekchain.
Mandatory disclaimer: This is a plan, not a promise. Everything after the free testnet mint is planned and may change. No numbers are final. Nothing here is financial advice or an offer of any asset. SqueekRunner is not affiliated with Squeekchain.
Already live: full arcade runner, double jump, LIVE and Practice modes, block bonuses, deterministic 60 Hz simulation, server-verified ranked replays, and whitelist application tooling (applications open at launch — dates will be announced on X). Run on the wheel →
11 / Sources
Where the facts come from.
Network facts are limited to the verified technical inspection of November 8, 2026, based on public documentation and the read API. Game balance figures come from src/config.ts and are verified against the table above by automated tests.
- Squeekchain Whitepaper — in active development, WHEELY9000, work, rounds, and network model.
- Public API Documentation — response contract and rate limits.
- Sepolia Deployment — published deployment parameters.
- Squeekchain Website — ecosystem context and architecture.
- Squeekchain Genesis — Aura, leaderboard, Squeeks whitelist, and Code Lane.
- Sepolia Testnet & Livestream — test mints, smart contracts, and Squeektoshi live wheel camera.
Project GitHub — link will appear once the repository is public. SqueekRunner is an independent community project built on Squeekchain. Not affiliated with or endorsed by the Squeekchain team.