One turn
When you send a message, Skye:- records the update so nothing is processed twice;
- assembles the context: her instructions, the active agent, relevant memories, your message, and any attachments;
- sends it to the model, which may call tools;
- delivers what the tools produce, then the reply.
Tools, not plugins
Skye is built from function tools over a plain chat-completions API:send_messageandsend_voice— her only user-visible output;generate_imageandedit_image— pictures;web_searchandweb_fetch— the web;shell_exec,python,read_file,write_file— the code workspace;read_skill— skill bundles;remember,recall,forget— memory;youtube_get_transcript— video captions;- automation tools, and the apps you connect.
Two kinds of memory
- The working conversation is the running thread, replayed each turn from a local store.
/resetstarts a new one. - Durable memory is small facts saved on purpose. Private facts are per person; group facts are per group. A group never sees a participant’s private facts.
The code workspace
Each person, and each group, gets a workspace on a shared volume. Every command runs in a fresh container that mounts only that workspace, runs as a non-root user, has a read-only root filesystem, and drops all capabilities. Files persist between commands; the container does not. A janitor loop removes idle workspaces after the time-to-live and enforces size caps.Groups
Only messages after Skye’s last turn in a topic are attached, as untrusted user content. The bot stays quiet unless it is mentioned, replied to, invoked by command, or named. Each forum topic has its own conversation but shares the group’s settings and memory.Automations and connectors
- Automations are an in-process scheduler in the bot. Webhooks arrive at
POST /automations/{id}/hook, authenticated by a stored header. - Connectors attach through a local MCP bridge. The bot never hands a provider a hosted tool, and a connector is shared with a group only when its owner says so.
Privacy by design
- Logs are structured and redact tokens, prompts, memory contents, and file bodies.
- Provider requests carry a privacy-preserving
safety_identifierderived from your user id, never the raw id. - Tracing is off by default.
- A code workspace never touches the host; code runs only in the container.
Run it yourself
Full setup and configuration.