For teams inside a business
Finance gets the numbers. Developers get their time back.
Your team's coding agents record the time as they work — attributed to the developer who ran them, sorted into the right project and category, and permanently labeled with the agent that produced them. Nobody fills in a timesheet.
Shyre is in early access and accounts are set up by hand. Tell us what you work on and we'll be in touch.
One Claude Code session, as Shyre measures it
One entry: 47 min, attributed, categorized
What this is, and what it isn't
It is an operational measure of engagement
It tells you that the Platform team spent most of last quarter in the billing service, and it does that without asking anyone to write it down. If your finance team has zero data today, this is the difference between a guess and a number.
It is not a payroll or capitalization record
The hours are sampled from agent activity, not clocked labor, and the idle cap is set per developer. We are not going to call that audit-grade, because it isn't.
Hours, and now what they cost
Cost rates have shipped — an effective-dated hourly cost per person, visible to owners and admins only, so Reports can show what a quarter of engineering actually cost. Internal chargeback is next.
Attribution, immutable
Which agent, on whose behalf, in which session — and the database refuses to let that be edited afterwards, including by an administrator.
And then what finance actually gets
Measuring the hours is half of it. This is the half that has to add up.
Reports, by project and by person
Hours and billable share over any period, per project and per person, with a lens that separates what a human logged from what an agent did.
What the quarter cost
An effective-dated hourly cost per person — owner and admin only — so a quarter of engineering has a number beside it, not just a duration.
Release approval, held on the record
Release notes with a named approver roster, and a sign-off the publish flow asks for before you ship. When someone asks who approved it, the answer is a record rather than a thread.
Closed periods stay closed
Lock a period and the database refuses to change it — enforced by a trigger, not by a screen that hides the button.
Which ticket, not just which project
Finance asks what an hour was against. The row answers it.
Entry description
Linked to
A number you cannot see is not a zero
Every figure on a Shyre screen has four possible answers, and three of them are not a number.
The four states
There is a value. There is a genuine nothing. There is “we could not load it”, which draws as a dash and never as $0.00. And there is “you are not permitted to see this”, which says so — a query hidden by permissions comes back empty with no error, so without that fourth state it is indistinguishable from an empty desk.
It applies to cost too
A cost figure carries the hours it covers — “cost known for 6.7h of 10.0h” — because an hour nobody priced is not an hour that cost nothing. Where the hours in view were priced in more than one currency the total is withheld rather than converted at a rate nobody chose.
And it runs the other way
A section that disappears on a good day cannot be told apart from one that broke, so “Nothing past due” says “Nothing past due” instead of vanishing.
A confident $0.00 you were never permitted to see is worse than no number at all.
Close a period and the database stops arguing
Not a screen that hides the button. A refusal, one level beneath every screen.
Lock through a date and an edit inside it raises an error whoever the caller is — including a cost rate that would start on or before the lock, and any change to a locked invoice's amounts, issue and due dates, or customer. Dragging an entry's date into the window from outside is refused too.
What stays open, on purpose
Marking a locked invoice paid still works, and so does recording the payment against it. A payment landing a month later is ordinary, and a lock that refused it would be a lock nobody could live with.
Both directions are recorded
Every lock and unlock is kept in a table that only ever gains rows, and unlocking makes you type the word. The lock itself has no edit path — changing a date means unlocking and locking again, which is two entries in the record rather than none.
Your developers already hate this. That's the point.
Shyre is the only time record where the answer to "who's going to fill this in?" is nobody.