How to use it

Two steps to timers that say their own name.

1 Ask what time it is, in either world.

what time is it Ask "what is the time in game" — "how long until my shift" It answers in both when they differ, so you never have to convert.

2 Set a timer, and give it a name.

set a timer for twenty minutes called fuel scoop Ask When it goes off it says the name rather than beeping. "how long left on the fuel scoop timer" — "cancel it"

! The one that stops people.

Timers live with D47, not with Elite. Close D47 and a running timer goes with it. They are for this session, not for next week.
Why it works this way

What time it is in both worlds at once, and timers and alarms that say their own name.

1 Two dates. One instant.

17 Aug 3312 out there +1286 years 17 Aug 2026 where you are One moment presented twice, not two clocks. Which is why they can never drift apart, and why D47 never asks a model to add 1286.

2 A timer is a stretch. An alarm is a moment.

TIMER forty minutes for the mining run a stretch of time ALARM seven in the morning a single moment gone if D47 restarts survives a restart Half of forty minutes through a crash is a question nobody can answer, so it is not asked.

3 One it could not sound, it owns up to.

07:00 due, and D47 was closed “That alarm was due at 07:00 and I was not running. I have not sounded it since.” Told at the next start, with when it was due. Sounding it hours late as though nothing had happened would be worse than not sounding it. A chime says something finished; the name says which.

Cancelling is reachable from this tab and from saying so, and from nowhere else — the AI is not offered it and is refused if it asks. Naming one that matches nothing, or two, is answered rather than guessed at: cancelling the wrong alarm of two is worse than being asked which.

The details

What time it is, in both worlds at once, and timers and alarms that say their own name.

Ask for it

“what’s the date” “what time is it” “set a timer for forty minutes for the mining run” “wake me at 07:00” “cancel the mining timer”

The first two need no AI configured at all. So does cancelling.

Two clocks, one instant

Elite Dangerous runs 1286 years ahead, so today is also a date in 3312. That is arithmetic over the same moment rather than a second clock — one instant presented twice, which is why the two can never drift out of step with each other.

21:04 on 17 August 3312 out here, and 21:04 on Monday 17 August 2026 where you are.

The galactic date is written the same way for everybody, because the galaxy’s calendar is not a regional format and a date that reads as 08/17 in one place and 17/08 in another reads as two different days. Your own clock is written the way your computer writes dates.

Directive 47 answers this itself. No turn is taken, no provider is needed, and nothing is spent — it works with no key configured and no network. Both dates also go into the block of live game state that rides along with every conversation, already worked out, so the ship’s AI can mention the date without asking for it. It is never asked to add 1286 to anything: that is arithmetic, and a model doing arithmetic in prose is wrong occasionally and confidently.

Timers and alarms

A timer is a stretch of time — forty minutes for a mining run. An alarm is a moment — seven in the morning.

They are set from the Utilities tab or by saying so, and they are named, because the name is how Directive 47 tells you which one finished.

What happens when one goes off

A short rising chime, and then Directive 47 says the name. One clip for all of them rather than a tone per timer: the sound says something finished and the sentence says which, which the voice does better than a chime ever could. It goes through the same audio arbiter as everything else, so it either waits for a sentence to end or lands on top of it according to the same rules.

Alarms survive a restart. Timers do not.

An alarm for 07:00 is a promise about a wall-clock moment that outlives the process. A forty-minute timer through a crash is a question nobody can answer — half elapsed, or start again? Neither answer is right, so it is not asked.

An alarm that could not sound says so afterwards. Directive 47 cannot fire while it is closed, so an alarm that came round in the meantime is reported the next time it starts, with when it was due:

Wake up: that alarm was due at 07:00 and I was not running. I have not sounded it since.

Sounding it hours late as though nothing had happened would be worse than not sounding it at all.

The file

Alarms live in one file beside the executable, and it is yours to edit:

{
  "alarms": [
    {
      "id": "8f2c1e40b7a94d2f",
      "name": "Wake up",
      "due": "2026-08-18T06:00:00+00:00"
    }
  ]
}

Edited by hand, it takes effect without a restart. A line the file gets wrong is reported rather than silently dropped — an alarm somebody relies on to leave the house is not a thing to lose silently — and the rest of the file still loads.

Cancelling is yours

Not offered to the AI, and refused if it asks. Cancelling is reachable from the Utilities tab and from the phrases above, and from nowhere else. Protected is about who is asking rather than how — so saying “cancel the alarm” works, and a hostile message arriving in your comms panel cannot reach one.

Naming one that matches nothing, or matches two, is answered rather than guessed at. Cancelling the wrong alarm of two is worse than being asked which.

The tool surface, for contributors

say_the_time

The date and time in both worlds. Answered by D47 itself rather than by the model: no turn, no provider, no tokens.

{"type":"object","properties":{},"required":[],"additionalProperties":false}

Protected, which here is about cost as much as about safety: the advertised tool surface is paid for on every turn whether or not anybody asks the time, and this question does not need the model at all. The keyword router reaches it; the model never sees it.

set_timer

Start a countdown that says its own name when it finishes. Minutes, from the moment it is set. Timers do not survive D47 restarting; use an alarm for a wall-clock moment.

{"type":"object","properties":{"minutes":{"type":"number","description":"How long, in minutes."},"name":{"type":"string","description":"What to call it. Said back when it finishes."}},"required":["minutes","name"],"additionalProperties":false}

Advertised, unlike the rest of this capability, and the asymmetry is the point: a duration arrives as English — “about forty minutes”, “an hour and a half” — which is the one thing a model does better than a closed grammar, and the keyword router cannot extract an argument from free text without starting to guess.

set_alarm

Set an alarm for a wall-clock time today or tomorrow. Alarms survive D47 restarting, and one that came round while D47 was closed is reported afterwards rather than sounded late.

{"type":"object","properties":{"at":{"type":"string","description":"Local time for the Commander, as 24-hour HH:mm."},"name":{"type":"string","description":"What to call it. Said back when it goes off."}},"required":["at","name"],"additionalProperties":false}

“Seven in the morning” said at nine in the evening means the seven that is coming rather than the one that went, so a time already past today is set for tomorrow rather than refused.

cancel_reminder

Cancel a timer or an alarm by name. The Commander’s own act: not offered to the model, and refused if it asks.

{"type":"object","properties":{"name":{"type":"string","description":"Which one. Omit to cancel everything running."}},"required":[],"additionalProperties":false}