HourdiniDocs
Tracking time

Sessions

Group an agent-driven block of work into one billable entry.

A session is a project-scoped container for work that doesn't fit a single running timer. Inside a session you can switch between active (you're in the loop), agent (an agent is running on its own), and idle (you stepped away) without each switch creating a new row on /entries.

When you end the session, Hourdini totals the billable seconds and writes one time entry for the whole thing.

Why sessions exist

The bare running timer assumes you're hands-on the whole time. That breaks down the moment an agent does the work for an hour while you check Slack. You don't want to bill the Slack time, but you do want to know how long the agent ran. Sessions track those separately, then collapse them into a single invoice line.

Start a session

Click the + in the sidebar's Sessions section, pick a project, type a short description, and confirm.

Screenshot pending
The new-session form in the sidebar. The project picker accepts a partial name.

The first beat is active, meaning you. You can also start a session from the Start tab of the Log Time modal.

The three beats

Every moment inside a session is one of three kinds:

BeatWhat it meansBillable?
activeYou're driving: typing, prompting, reviewing.Always.
agentAn agent is running on this session.Only if the project has Bill agent time turned on.
idlePaused, away, or waiting on something external.Never.

Use the row actions in the sidebar to flip between kinds. The MCP tool session_beat is what a connected agent calls when it starts and finishes a run.

Billing agent time

By default, agent time is not billable. Most freelancers don't want to charge a client for the agent thinking while they were eating lunch.

If your engagement covers supervised agent work, turn on Bill agent time in the project's settings. The flag is snapshotted when a session starts, so flipping it later won't retroactively rebill an older session.

One active beat at a time

You can only be actively working on one thing at a time. If you focus a different session, the previous one drops to idle (or to agent, if that's what the row action said).

The same rule reaches across to the bare timer. If a timer is running and you start or focus a session, the timer stops at that moment and gets saved.

End a session

Click End session on the session detail page, or use the row action in the sidebar. Hourdini closes the open beat, sums the billable seconds (active plus agent if the flag is on), and writes one entry on /entries with that duration.

Sessions with zero billable time (you opened it, went idle, ended it) won't create an entry. The session itself stays in the ended list for the audit trail.

When to use a session vs. a timer

Use a timer when you're going to do the work yourself, start to finish, in one sitting.

Use a session when an agent is going to do part of the work, or when the work is going to be fragmented during the day with gaps.

Manual log is still the right call when you're catching up at the end of the day. Sessions are a live-tracking tool, not a backfill tool.

Next

On this page