PumaTimer is a layered presentation timer. You write the day as an outline, and it runs one item at a time against a total that never moves. It is a single offline HTML file, so there is no server, no account and nothing to sign in to.
The work happens across three screens, in the order you need them: Paste is where a plan comes in as text, Plan is the editable table where you can see the wall-clock times each row resolves to, and Run is the dial you present against.
Nearly everything here has a keyboard shortcut, and the Keyboard tab lists them all.
One line is one item, and the same grammar is read in a row's name cell and in the Paste box. Anything you can paste, you can also type.
These are the tags. Nesting is not one of them — a section owns every row after it until the next section, which in pasted text means two spaces of indent and in the table means the row order you can see. There is no third level either way.
Coffee ~20 @10:00 #break
~20~1h30, [45m], 25 min or 0:35.@10:00@1, @1p, @1pm, @1:00, @13:00 and @1300 all mean one o'clock.@12:30-13:30#breakbreak, buffer and section, plus start and end for the day's own frame.//The clock only ever runs forwards. A @1:00 written below a @12:00 means one in the afternoon, which is what anyone writing an agenda means by it. Write @1:00am if you really do mean the small hours.
The # vocabulary is closed, and that is what makes it safe to peel a tag off the end of a title — Fix bug #abc123 keeps its name. If you meant one of these characters literally, escape it: \@, \~ and \# pass straight through.
Every presentation is stored in your browser's localStorage, on this device and this browser only. Nothing is uploaded anywhere.
The Export button saves every presentation to a single .pumapack file; ⌘/Ctrl+S saves a quick backup. Restore either with Import, or by dragging the file onto the window. The Export .md button saves the current run-sheet — planned against actual — for your own notes.
Import also accepts two other things. A .md, .txt or .outline file comes in as a plan rather than a backup. And a PumaTTX .pumapack — the same extension, but written by the tabletop-exercise planner — opens the exercise picker instead of replacing your data.
Danger zone. This erases every PumaTimer presentation in this browser. Export a backup first.
Type DELETE EVERYTHING to confirm:
This is a custom presentation timer engine that takes a variety of inputs and allows for in-flight adjustments and active time-banking. It was built to ingest PumaTTX showmaps, but will work for any type of presentation.
This tool is provided as-is, for informational and productivity purposes only. All timing decisions and records are your own.
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 presentations 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 presentation. Back up regularly — the topbar Export button saves a .pumapack you can re-import or drag back onto the window.
Press ? any time for keyboard shortcuts and help.