Complete reference for chatting with your agent
Send a message — the agent responds. Each conversation runs in its own container.
In a direct message, every message you send reaches the agent. In a group chat, mention the bot by name or reply to one of its messages. The agent usually responds in 5–30 seconds — container startup and thinking both take a moment.
Your session continues across messages until you explicitly reset it with /new or it times out from inactivity. For long tasks the agent sends status messages so you know it's still working. You can send a follow-up mid-task — the agent adapts.
# first message
you: summarise the three main risks in this contract
# steer mid-task
you: actually focus only on liability clauses
Slash commands at the start of a message are intercepted before the agent sees them.
These commands are handled by the gateway — the agent never receives them. The rule is positional: /new at the start resets your session; "tell the agent /new context" goes straight to the agent as plain text.
| Command | Effect |
|---|---|
/new [msg] | Reset session. Optional message starts fresh immediately. /new #topic resets only that topic. |
/stop | Halt the active container immediately. |
/ping | Check the gateway is alive — responds with pong. |
/chatid | Returns your current chat ID. |
/file | put upload, get download, ls list workspace. |
/new let's start over — summarise Q3 results
/file ls
# mid-message /new goes to the agent, not gateway:
can you explain /new session handling?
#topic for parallel threads, @name for child agents.
Any message containing #word routes to that topic's dedicated session. The agent only sees the history for that topic — your main session stays untouched. Use this to run parallel work streams without contexts bleeding into each other. Reset a single topic with /new #topic.
Put @name anywhere in your message to address a specific child agent — @support, @code, @research. Each child has its own personality, instructions, and conversation history. The routing token is stripped before the agent sees your message.
#research start digging into WASM runtimes
#deploy any issues with last night's rollout?
@support I have a billing question
# support agent receives: "I have a billing question"
/new #deploy # reset only the deploy thread
Send files directly — images, PDFs, voice, documents. The agent reads them all.
Attach files directly to your message — images seen natively, PDFs extracted, documents read as text. No special command: just attach and ask. Voice messages (WhatsApp, Telegram, Discord) are automatically transcribed before the agent sees them.
To retrieve files the agent produced, use /file get ~/path or ask the agent to send it. The agent's writable area is ~/tmp/.
here's the report [report.pdf] — pull out the key metrics
/file put data.csv
/file get ~/tmp/summary.md
send me the output as a file
# voice messages arrive as text:
You [voice: can you summarise the last three tickets?]
The agent remembers across sessions — diary, facts, user preferences, compressed history.
The agent maintains several knowledge layers that persist between sessions:
diary/YYYYMMDD.md), written at session end, surfaced at next session start. Last 14 days injected automatically.users/<id>.md. The agent adapts without you repeating yourself.Tell the agent to remember something and it picks the right store. Ask "what do you know about X?" and it searches all layers at once.
you remember I prefer TypeScript for all new projects
agent Got it — noted. I'll default to TypeScript.
you search your memory for anything about the API migration
agent Found 3 matches across diary and facts. Migration moved
auth to /v2/token, complete as of March 10.
Ask the agent to build an app — it deploys to your web host URL live.
The agent writes files into /workspace/web/pub/, served live at your group's URL. All files under pub/ are public. Send follow-ups to iterate — the agent edits in place and changes appear immediately.
you build a todo app with dark mode
agent Done. Live at: https://fab.krons.cx/pub/mygroup/todo/
you add a due-date field
agent Updated — reload the page.
Ask the agent to schedule recurring tasks — it sets up cron jobs that run automatically.
Task types: cron (schedule expression), interval (every N ms), once (specific time). Scheduled tasks run isolated with a self-contained prompt — write the prompt as if it's a new conversation. View or cancel: "what tasks are running?" or visit /dash/tasks/.
you check the weather in London every morning at 9am
agent Scheduled "weather-london" at 0 9 * * *. I'll message you daily.
you cancel the weather task
agent Cancelled.
Skills are slash commands that extend what the agent can do — and it can create new ones.
Type /skill-name at the start of your message to invoke one. The agent can also create new skills by writing a SKILL.md file — capabilities persist across sessions. Ask "what skills do you have?" to see the full list.
/hello /self /facts /recall-memories
/compact-memories /diary /web /howto
/users /migrate /info /commit
you what skills do you have?
agent Running /self… [lists all loaded skills]
The agent browses the web, analyzes data, and produces charts and reports.
Ask it to research any topic — it runs live searches, opens pages, and returns a summary with sources. For complex sites it uses a browser to interact with forms and take screenshots. Video and audio URLs are handled with yt-dlp; transcription via Whisper.
Send data and the agent analyzes it: CSV, Excel, or paste numbers directly. It produces charts (matplotlib, plotly), Excel files (openpyxl), PowerPoint decks (python-pptx), and PDF reports (weasyprint).
research the latest on quantum error correction
download and transcribe https://youtu.be/abc123
analyze this CSV and plot monthly totals
turn this data into a PowerPoint slide deck
The agent codes in any language, runs it, and sends back results.
The container ships with Node/Bun, Python 3/uv, Go 1.24, and Rust/Cargo. The agent writes code, installs packages, runs it, and iterates until it works — then sends you the output or the file. Also available: SQLite, DuckDB, PostgreSQL client, Redis client, GraphViz, pandoc, imagemagick, ffmpeg.
write a Go HTTP server that returns JSON health
run this Python script on my data file
convert this video to mp3 and send it back
The /dash/ portal shows gateway status, tasks, groups, memory, and activity.
Log in via OAuth (Google, GitHub, Discord, Telegram). Your first login creates your canonical identity — subsequent logins via other providers link to the same account. Manage linked accounts at /dash/profile.
https://fab.krons.cx/dash/
Status channels · groups · active containers · errors
Tasks scheduled jobs · run history · pause / cancel
Groups routing table · group config · message counts
Memory browse MEMORY.md · CLAUDE.md per group
Activity last 50 messages · routing decisions
Profile canonical identity · linked OAuth accounts
Message the gateway and request a world — the operator approves and you get your own agent.
When an instance has onboarding enabled, messaging the gateway as an unrecognized user starts a setup flow. Pick a name for your world, wait for operator approval, and you get a dedicated agent with its own workspace, memory, and web space. Your agent is isolated — separate sessions, separate files, separate personality.
you (first message to the gateway)
gateway Welcome! Pick a name for your world.
you myworld
gateway Request submitted. Waiting for approval.
# operator approves — you get a welcome message
agent I'm myworld — your dedicated agent. Tell me what you need.
Chat from a browser — no app, no account needed for anonymous slink chat. Log in via OAuth for persistent identity and history.
Each group has a slink (shared link) — a token-gated URL for web chat. No login required; you get a pseudonym. Messages are rate-limited and don't persist across sessions.
Log in at /auth/login with GitHub, Google, Discord, or Telegram. Your first login creates your canonical identity. Add more OAuth providers at /dash/profile — all link to the same account.
Authenticated users get:
/chat/ and /dash/ endpointsIf you log in with a new OAuth provider while already authenticated, you'll see a collision page. Choose:
This prevents accidental merges. Manage all linked accounts at /dash/profile.
Send a message and wait for the reply:
curl -X POST https://fab.krons.cx/slink/TOKEN?wait=30 \
-H "Accept: application/json" \
-d "content=your message&topic=default"
The ?wait=N parameter blocks up to N seconds for the first assistant reply. Returns {"user": "...", "assistant": "..."} as JSON.
For real-time updates, use Server-Sent Events:
curl -N https://fab.krons.cx/slink/stream?group=GROUP&topic=TOPIC
Each response appears as data: {"role": "assistant", "content": "..."} events.