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.
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:
| Beat | What it means | Billable? |
|---|---|---|
active | You're driving: typing, prompting, reviewing. | Always. |
agent | An agent is running on this session. | Only if the project has Bill agent time turned on. |
idle | Paused, 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.