ArombaDocsChangelogSecurityStatus

Docs

Aromba — Bot

Telegram is the only interface in phases 1–3. Everything a user can do, they do here. The bot is one chat with one server.

1. Commands

Ten in phases 1–2, six more in phase 3. Nothing else.

CommandPhaseDoes
/status1Server name, uptime, disk, memory, last scan, how many chores and how many run by themselves — and, when prod mode is on, that it is (PLAN D173): it turns every chore into a run that waits for a tap, so a summary that leaves it out describes a server the person has not got. Nothing is said when it is off. Last run, next run and open alerts are still to come
/scan1Runs the first-scan checks again, replies with the same report format
/chores2List of chores with on/off state and color. Tap one to toggle, edit params, dry-run, or run now
/run <chore>2Runs one chore now (red ones ask first)
/receipt2Last receipt. /receipt 7 — last 7 days, one line per day
/quarantine2What’s in quarantine, sizes, days left. /quarantine 3 opens one entry: tap to restore
/panic1Stops all chores and the assistant, revokes the AI key from memory, keeps the chat alive. Second /panic asks to confirm a full uninstall
/key3Shows which provider is set (never the key). Instructions to change it on the server, and the one sentence on open models and what they cost (PLAN D236)
/model3Shows the current model, lets you pick another from the provider’s list. Below it, a product’s pages by direction — health, hobby — with the model each is written on and the price of a page; /model health offers the other two tiers (best, default, cheapest) with a tap (PLAN D224). Then /build’s own line: the model its chores are found and written on and the price of a build, and /model programming for its tiers (PLAN D231)
/settings3Toggles below
/notebook3What the assistant has learned about this server, one line each; tap to delete
/today3The day: Aromba’s plan, the user’s events and to-dos, what a connected calendar holds, numbered in time order, 20 lines and [More]; [This week]. /today 2 opens one: a to-do gets [Done] [Tomorrow] [Leave it], an event [Delete] [Leave it], and one brought in from another calendar [Leave it] — it is not ours to delete (PLAN D107)
/add <when> <what>3Adds an event (/add tomorrow 15:00-16:00 demo) or a to-do (/add fri renew domain) to Aromba’s calendar; the reply says what follows from it: reminder, demo check, what waits (PLAN D107)
/prod3Whether this server is in prod mode and why. Turning it off is a PIN action and says the consequences before the keypad opens; turning it on takes nothing, because making this server stricter is always allowed (docs/05-security.md §9)
/task3The plans on the go, one line each with how far they have got. /task 2 opens one: the goal, every step with what came of it, and the step it is on with what that step needs — [Run ], [Check now] or [Done], and [Stop the task] (PLAN D119)
/build <what you need>3The chore builder (09 §11, PLAN D132). Says what you need in your own words; Aromba looks at what this server already has first and offers to turn one on ([Turn it on] [Leave it]), then at the catalog’s skills not installed here and offers one with what it may do ([Install] [Later], the PIN first when it reaches the network: D223), and writes a new chore only when nothing does it — shown whole, with what it watches, when it runs and what it touches, and [Save it] [Not this]. What is saved is red, off and in mine/; the Warden refuses anything else. It runs on the programming direction’s model at the tier /model programming set, not on the chat’s (PLAN D231)
/instruments3The pages built for a product on this server (15-instruments.md, PLAN D210): by product, the most used first, how many asks each answered, and which wait for the owner. A new one arrives by itself as a file — the page, filled with the product’s made-up example — with what was asked, what it cost, and [Approve] [Not this]; one the library already had goes back with no word in the chat. One sent by the owner’s rule of no tap (PLAN D277) arrives the same way, already sent, with [Add to the library] [Leave it]
/skills2Installed skills with weight and what each may write. Browsing the catalog, and enable/disable (a red action), arrive with the PIN; until then aromba skill on the server
/totals2The anonymous total of freed space: what is shared now, and [Yes] [No] to change it (D15). Asked once on its own, with the first real receipt
/help1One screen, the command list

Anything that is not a command is a message to the assistant. On a server with no AI key set, free text gets: “I can’t chat yet — use /help for what I can do.”

2. Buttons

Every bot message that offers a decision ends with inline buttons. Rules:

Suggested replies

Under assistant answers (phase 3) the bot offers up to three short next-step chips built from the context, for example after a disk report: “Show the biggest folders” · “Clean it tonight” · “Ignore”. Chips send a normal message to the assistant. They are a typing aid, nothing more, and can be turned off in /settings.

3. Voice messages (phase 3)

4. Settings (/settings)

SettingDefaultOptions
Quiet window03:00–05:00, in the Timezone setting’s zoneany window, or “whenever load is low”
Morning receipt08:00, in the Timezone setting’s zoneany time, or off
Alertsonon / only critical / off. Neither critical nor off drops a line: what does not reach the chat is one line in the day’s receipt, because no alert is ever silently dropped (§6). off still sends a critical one — the setting is about noise, and a failed service is not noise
Message limit per dayoffany number of alerts a day; past it they wait in the receipt, as “only critical” does. A critical alert is never held by it, and a reply to something you asked never counts against it — the limit is on what Aromba says unasked (PLAN D140)
Suggested repliesonon / off
Voice messagesoff until the voice skill is installedthe skill’s own switch in /skills, and no second row here: two switches for one thing is one of them that does nothing
Assistanton if key seton / off
Daily AI budgetoffany amount; if set, at the limit the assistant pauses until tomorrow, chores continue
Depthnormallight / normal / deep — how much one question may read before it answers, as a share of the model’s own context window. Not a budget: the worst case, so that one question cannot cost a day. 04 §4 has the numbers
LanguageEnglishEnglish only for now, so it is in config.toml and not in /settings; the row arrives with the second language
Dashboard synconon / off — what the relay is told for the dashboard (08-dashboard.md §5). Off sends nothing at all; the journal, the receipts and the health stay on the server either way
StyleDryDry / Warm / Captain — see 10-voice.md
Timezoneasked at the first contact: where the user is, with what the server’s clock readsany; every time in the chat is the user’s, and a correction moves future calendar items with it
Evening account21:00, in the Timezone setting’s zoneany time, or off
Calendaronone row each, on / off: reminders (and their lead, 30 minutes), demo check, quiet during marked events, the day in the morning receipt. They apply to the user’s own items and to the events of any calendar they connected with aromba calendar add alike — an event is an event, whichever list it came from. Asks in free time and “Add to calendar” get their rows with the features themselves
Calendar wordsdemo, launch, releaseany words; one in an event’s title, as a whole word in any case, marks it
Calendar titlesoffconnected calendars only: on only at a root terminal (aromba calendar titles on); here it shows, and turns off — the assistant’s calendar tool then carries the titles of their events that count. The user’s own items always show theirs
Anonymous totalsoff; asked once with the first receipton / off — one number a night, bytes freed, with a random install id

Settings are stored in /etc/aromba/worker/config.toml; the bot edits that file. Editing the file by hand works too and is picked up without restart.

5. Message rules

6. Notifications

No limit by default, and no alert is ever silently dropped for being inconvenient. What varies is how loudly one arrives (PLAN D115): before an alert is sent, Aromba weighs how much of the person’s attention it is worth, from how far past its own line the number is, how far that is from normal for this server, how many of these have fired today, and what the person did about the last few — tapped the fix, tapped “Later”, or left it.

That confidence lands in one of three bands:

BandWhat happens
surethe message arrives the way it does today: the phone notifies
betweenthe message is in the chat, sent without a notification — it is read when the person next looks
unsureone line in the day’s receipt — Held back: <what it said> — 31% sure: you left the last ones alone — and nothing in the chat

A critical alert skips all of this: it is sent aloud however often its kind has been ignored. The bands are arithmetic on numbers already kept; no model is asked, so a decision costs nothing and takes no time. Every alert’s band and its reason go in the journal, so “why did you not tell me” always has an answer. An alert someone has left alone three times demotes itself to a receipt line; one whose fix they tapped last time interrupts. This decides only how loudly to speak: what may run is still the Warden’s policy and a tap (D109).

The only other built-in restraint is that a watcher repeats an alert only if the value gets worse. A user can have messages that are not critical wait out an event they marked — one of their own items, or, with the calendar skill, an event in a connected calendar (09-features.md §13).

Critical is what the events service-failed, disk-95 and low-memory are raised for — a service that failed, disk at 95% or more, memory past the memory watcher’s threshold — and, raised by the skills that watch them, container-down, site-down and cert-expired (02 §1). An alert is classed by the event its run raised, never by its text, and only when that run’s chore is a core chore or an official skill’s: any other chore may raise the event for what follows it, but its alerts stay what they are. Critical is what “Alerts: only critical” keeps, and what no hold ever delays, together with the fix offered with it. A user who wants fewer messages sets “Message limit per day” or “Alerts: only critical” in /settings.