Built-in system context
Every agent run through the shared gateway wiring receives a turn-start clock snapshot and a bounded host summary, including Dashboard, Telegram, CLI, scheduled runs and delegates. No agent-file edits or approval grants are needed.
system.timereads the clock and owner profile again on every call.system.inforeturns the same time information plus OS/version, kernel, architecture, hardware model when detectable, and host timezone. Host facts are cached for five minutes; unknown hardware or virtualization is not guessed.- The owner’s zone is the one in Settings → Profile.
BUDDI_TZonly fills an empty profile at start and is the fallback while the profile names none (or is unreadable), then New York. The same zone drives the turn clock,{{today}}in agent prompts, tools, widgets (“here” on the World clock), reminders, digests and the dashboard’s footer and lock clocks. - A change in Settings → Profile (or through
owner.set_profile) applies at once, with no restart: the server keeps the profile’s zone in memory, updates it on every save and re-reads it every minute. - Every schedule records whether its zone was named on purpose
(
core.schedule_specs.timezone_explicit). One made without a zone — the recap, the learning digest, a plugin’s mission that names none, an agent’sschedule.proposewithouttimezone— follows the owner’s zone: a Profile change moves it as a new schedule revision, so its next run is 8 AM in the new zone. One whose creator named a zone (the tool’stimezone, a mission that declares one, a zone chosen throughPOST /api/missions/:id/schedule) keeps it. At every start, schedules that follow the owner and sit in another zone move to it. Schedules from before the flag are settled once at start, by provenance: one buddi itself made without a zone (a plugin’s default mission that names none, the learning digest, the first-run arc, a starter’s or plugin agent’s declared mission, matched by mission id and cron) that sits in the default zone of the time (BUDDI_TZ, else New York) or the Profile’s follows the owner; any other,schedule.proposeand dashboard ones included, keeps its zone, since nothing recorded whether it was named. Missions on the dashboard say “follows your timezone” instead of the zone;buddi missionsadds it to the schedule line. A one-off reminder is an instant and does not move. buddi doctor(a checkout’s table and a packaged install’s Timezone line) names the zone and where it comes from — Settings → Profile,BUDDI_TZ, or the default — and this machine’s own zone when it differs.- How the owner reads times and dates (Settings → Profile: 12-hour or 24-hour, “Thu, Oct 1”, “Thursday, 1 October” or ISO) is one line under “About the owner” for every agent, so a reply writes “2:05 PM” to someone who reads 12-hour time. Auto adds nothing.
- The front desk alone is also told the owner’s places — each label, the
address as typed, the town it was matched to and its zone — as context, the
way it is told the timezone. Other agents are not; a plugin reads them only
through its declared
owner:places.
Host means the machine/environment running the Buddi server, not the browser or Telegram client. macOS product version and hardware model identifier are read using fixed, bounded system commands. Windows/Linux report available OS facts; hardware model can be null. A hardware identifier is not guessed into a retail name.
No hostname, username, serial number, credentials, environment dump or private filesystem inventory is included. These facts confer no browser, shell or file access. Use separately granted status tools to check live host/computer permissions.
The two platform tools are separate from configurable agent grants. Their
schemas are appended by the shared runtime, and the actual tool set is recorded
in run events. The time context is authoritative over older dates in agent
personas/history; long-running tasks should call system.time again.
