Start here
Requirements
Everything the Stack needs is free to start with. You bring your own accounts; nothing ships with a MIKODES key, account or fee address.
Required#
| What | Why | Checked with |
|---|---|---|
| Node.js 20.12 or newer with npm | The admin declares "engines": { "node": ">=20.12" }. The data jobs run on Node 20 in the workflow and need Node 18+ features (fetch, AbortSignal.timeout). | Node 22.22.2 and npm 10.9.7 on macOS, 2026-09-25 |
| A GitHub account and a repository you own (private or public) | The refresh job runs on GitHub Actions. It must run there, not on your computer, because a network that blocks a venue does not affect GitHub's runners. | The job has run 5 times on the project's private repository |
| A static web host | The public pages are plain HTML, CSS, JavaScript and JSON. vercel.json is included for Vercel; any static host works. | Local static server; see Deployment |
| Git | To push the code and to commit config/public.json after you change settings. |
Optional#
| What | When you need it |
|---|---|
| Your own Polygon RPC URL | Optional. The tape job uses it first when you add it as the GitHub secret POLYGON_RPC_URL (how); without it the job uses three public keyless RPCs. The admin's Status page can check the same URL answers as chain 137. |
| A webhook endpoint | If you want the Admin Kit's alerts delivered (Notifications section). |
| Python 3 | Only for the local preview command python3 -m http.server. Any static file server does the same job. |
What you do not need#
- No API keys. Kalshi, Polymarket's Gamma and CLOB read endpoints, and the public Polygon RPCs are unauthenticated.
- No database server. The public pages read static JSON. The admin keeps its own settings in a local SQLite file (
admin/data/admin.sqlite). - No application server in production. The admin runs on your computer and is never deployed with the site.
- No MIKODES service. MIKODES operates nothing for you. You run your own copy.
Platform notes#
- The admin depends on
better-sqlite3, which normally downloads a prebuilt binary duringnpm install. On a platform without a prebuilt binary it compiles from source and needs a C++ toolchain. Only macOS (Apple silicon) has been checked for this guide. - The public pages load the Inter and JetBrains Mono fonts from Google Fonts. Offline, system fonts take over; nothing breaks.