PumaTimer is a facilitator's stopwatch and scribe for tabletop exercises — one screen that keeps the scenario clock, paces each inject, and captures the timeline as it happens. No server, no account, no telemetry.
Scenario clock (T+ / T−) — a count-up clock for the exercise. Start it when play begins; every note is stamped with the T+ time. Skip ahead (+1m … +1h) or Set T+ to jump over simulated dead time. Or Schedule start to run a T− countdown — set a duration ("in 15:00") or a clock time ("at 14:30") and the exercise auto-starts the moment it reaches zero, for a pre-exercise break that begins on schedule.
Clocks stay in lockstep — the scenario clock and the active inject countdown are synchronized to the second, so they tick over at the exact same instant instead of drifting out of phase.
Inject countdowns — pre-build your injects (a name + a duration) or add them on the fly. One click starts an inject's countdown. Only one inject runs at a time — starting the next pauses the current one, keeping whatever time was left on it.
Alerts are visual, never audible — in a room you can't beep. The whole screen pulses yellow for the final minute of an inject and pulses red when it runs overtime.
Fast notes & timeline — a single field captures notes, findings, decisions, and actions. Pick a type and press Enter, or tag inline as you type: start with #f / #d / #a (first letter of the type) and the rest becomes the note — e.g. #f suspicious login on WKS-07 files a Finding. Each entry is timestamped against T+, building the after-action timeline for free.
Exercises (workspaces) — one tab per exercise. Switch, rename, and recolor them from the tabs at the top.
Timeline export — export any exercise's timeline as Markdown for the after-action review, or the whole set as a .pumapack backup (⌘/Ctrl+S). Import or drag-drop restores it.
New to it? Open the Running one tab for a two-minute walkthrough.
Running an exercise with PumaTimer
A tabletop exercise walks a team through a scenario in compressed time: an hour of wall-clock stands in for a multi-day incident. PumaTimer keeps two clocks so both stay honest.
Before you start. Add your injects — the scripted events you'll introduce (initial alert, escalation, media call, exec briefing), each with a duration you want to allow. Reorder and edit them until the run-sheet looks right.
Running a pre-brief break? Use Schedule start to count down (T−) to the start time — by a duration or a clock time. The scenario clock auto-starts the moment the break ends, so nobody has to watch the clock.
Kick off.Start the scenario clock when play begins (or let the T− countdown do it). Deliver your first inject and start its countdown — the team now has a visible pace. Capture what happens as notes; each is stamped at the current T+.
Pace with the pulse. When an inject nears its end the screen pulses yellow (one minute) then red (overtime). That's your cue to wrap the discussion and move on — starting the next inject stops the pulse.
Skip the boring parts. When the scenario says "four hours later," use Skip or Set T+ to advance the scenario clock without waiting. The T+ stamps on your notes stay meaningful.
Close out. When play ends, pause the clock and export the timeline as Markdown. It's the spine of your after-action review — every decision and finding, in order, with its T+ time.
Everything is one field and one click on purpose: your attention belongs on the room, not the tool.
Where your exercises live
Every exercise is stored in your browser's localStorage, on this device and this browser only. Nothing is uploaded anywhere.
This is the whole database. If you clear site data, use a private window, switch browsers, or lose the device, your exercises are gone. Back up regularly.
Backing up
The Export button saves every exercise to a single .pumapack file; ⌘/Ctrl+S saves a quick .json backup. Restore either with Import, or by dragging the file onto the window. The Export .md button in the notes panel saves just the current exercise's timeline for an after-action review.
Clear all local data
Danger zone. This erases every PumaTimer exercise in this browser. Export a backup first.
Type DELETE EVERYTHING to confirm:
?
Open this help
⌘/Ctrl + S
Save a quick .json backup
Space
Start / pause the scenario clock
Enter
Add the note in the capture field
#f / #d / #a …
Tag a note inline (first letter of the type), then type it
N
Focus the note field
Esc
Close dialog / menu
About PumaTimer
PumaTimer is a lightweight, portable, offline exercise-timing and note-taking tool that runs entirely in your browser. It is built for the person running a tabletop exercise: the facilitator who needs to pace injects, keep a scenario clock, and capture the timeline without ever looking away from the room.
This tool is provided as-is, for informational and productivity purposes only. It is not professional security advice. All exercise decisions, findings, and records are your own.
About PumaWorx
PumaWorx is a suite of offline, single-HTML productivity apps that run entirely in your local browser. The entire suite is a personal, open source vibecoding project.
This is an offline single-HTML app. No data goes to or from the internet — no server, no account, no telemetry. Your exercises live in your web browser's localStorage — on this device, in this browser, and nowhere else.
Your data is YOUR responsibility.
Clearing this site's data, opening it in a private window, switching browsers, or losing this device erases every exercise. Back up regularly — the topbar Export button saves a .pumapack you can re-import or drag back onto the window.