Skip to content

Releases

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 15 Nov 18:34

byob can now work with your email and calendar, and answer questions about itself.

Email and calendars

Two new bundled plugins, off until you switch them on (Settings → Plugins):

  • Mail (IMAP and SMTP, one account): mail_search, mail_read, mail_folders, mail_draft (saved to your Drafts), mail_mark (read, unread, flag, move) and mail_send. Reading never marks mail as read. Presets for Fastmail, iCloud and Gmail, or fill in your own servers.
  • Calendar (CalDAV, one account): calendar_list, calendar_events, calendar_free_busy, calendar_create, calendar_update and calendar_delete. Time zones, all-day events and repeating events (including "2nd Tuesday", exceptions and moved occurrences) are handled. Works with iCloud, Fastmail, Nextcloud, Radicale and other CalDAV servers.
  • Some things always ask you, whatever the approval mode: sending an email, creating or changing an event with attendees (the server may email them), and deleting an event. The card shows the whole message or event; a call too large to show in full is refused instead.
  • Email and event text is treated as outside data, not instructions to the model.
  • Passwords are kept as secret settings and never sent to browser clients. Gmail and iCloud need an app password.
  • Not supported yet: Outlook / Microsoft 365 and Google Calendar (they need OAuth sign-in).

Help

  • byob_help: the model can now look up byob's own guide (installing, connecting a model, settings, workspaces, mail and calendar setup, writing plugins) instead of guessing. On by default; read-only and local.

Agents

  • Subagents get the guidance of the plugins whose tools they have (for example mail's "prefer drafts, never claim mail was sent"), not just the tools.

For plugin authors

  • confirm in a tool's declaration makes a person approve every call, whatever the approval mode: true, a warning text, or {"warning": "...", "when": ["arg"]} to ask only when given arguments are set.

Fixes

  • The browser UI server's "server busy" reply could be lost on Windows when a request arrived late.

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 15 Nov 15:11

byob for macOS now comes as an app.

macOS

  • byob-<version>-<target>.dmg for Apple silicon (aarch64) and Intel (x86_64): drag byob.app into Applications. The HTML app renderer is inside it. The .tar.gz archives are still there too.
  • Opened from Finder, byob starts in your home folder and finds your tools. Apps started from Finder get almost no PATH; byob now takes your login shell's (plus the usual Homebrew and Nix folders), so run_command finds the same programs as in a terminal.

The macOS builds aren't signed by an Apple developer yet. Downloaded with a browser, macOS won't open them at first:

  • for the .dmg: try to open byob once, then System Settings → Privacy & Security → Open Anyway (on macOS 14 and older, right-click → Open), or run xattr -dr com.apple.quarantine /Applications/byob.app;
  • or skip Gatekeeper entirely by fetching the archive from a terminal:
    v=0.3.4; curl -L https://github.com/Scronkfinkle/byob/releases/download/v$v/byob-$v-aarch64-apple-darwin.tar.gz | tar xz
    ./byob-$v-aarch64-apple-darwin/byob
    (use x86_64 instead of aarch64 on an Intel Mac).

Work Macs whose management blocks unsigned apps won't run it until it's signed.

v0.3.3

Choose a tag to compare

@github-actions github-actions released this 15 Nov 03:30

A patch release: long jobs no longer stop when the server chokes on a reply, suggested prompts start right away, and chats keep their server slot on llama.cpp.

Fixes

  • A failed request no longer ends the turn. When the server can't read the model's reply (llama.cpp answers a malformed tool call with an HTTP 500 or an error in the stream), byob tells the model what went wrong and asks again, up to two more times. Other server errors (5xx, a dropped stream, "Loading model") are tried again after a short pause. Requests that are wrong in themselves (a 4xx such as context too long) still stop at once.
  • A broken tool call no longer switches the endpoint to prompt-based tools. Before, a "Failed to parse tool call" error could be mistaken for a server that doesn't support tools.
  • The model fixes failed tool calls instead of giving up. The default system prompt now says to read the error and try again; calls you decline are still not repeated.

Interface

  • Suggested prompts send on click in an empty chat, instead of only filling in the composer. While an attachment is still uploading, the prompt goes into the composer as before.

Servers with slots (llama.cpp)

  • byob sends id_slot to servers that report total_slots, so each chat keeps the same slot (and its prompt cache) from turn to turn, and subagents run in slots no chat is using instead of evicting the main chat's cache. Endpoints that don't report slots, such as hosted APIs, get nothing extra.

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 13 Nov 02:37

byob can now search the web, read PDFs and Office documents, look at images, remember things between chats and keep a plan for long tasks. Each of these is a bundled plugin you can switch off.

New tools

  • Web search and reading. web_search and web_fetch (a page as readable text). Privacy: by default, searches go to Exa (exa.ai), a third-party service, and pages that need JavaScript are read through Jina Reader (r.jina.ai). Both see what you send them, and byob says so the first time each is used. To keep this private, set your own SearXNG, Brave or Tavily under Settings → Plugins → Web, turn the reader off, or switch the plugin off.
  • Documents. read_file reads PDF, Word (.docx) and PowerPoint (.pptx), page by page for long files.
  • The model can look at images. read_file and read_artifact show PNG, JPEG, GIF and WebP images to models that can see, and look_at_image also shows PDF pages. If the chat's model can't see, a vision model role in settings can describe the image instead.
  • Memory. remember and forget keep short notes in plain Markdown you can edit: one file for every chat, one per workspace. The Memory pane shows them.
  • Plans. For multi-step tasks, the model keeps a step list (update_plan), shown as a card in the chat and kept in front of it until the work is done.
  • Questions. ask_user puts a question on a card with choices and a field for your own answer.
  • Editing and searching files. edit_file changes part of a file instead of rewriting all of it; search_files searches the workspace.
  • Today's date is in the system prompt.

Settings

  • Tool calls per turn: 10, 30 (the default), 100, 300 or No limit. Long jobs no longer stop at 30 calls unless you want them to. When a turn hits the limit, the model says where it stopped.
  • Images to the model: images are sent as JPEG 85 % by default, which makes requests several times smaller (a screenshot goes from 198 KB to 57 KB). Choose another quality, or send them as they are.
  • Both can be set for every chat, per workspace or per chat.

Interface

  • Zoom the whole interface with Ctrl + / Ctrl − / Ctrl 0, or from Settings → Appearance or the ⋯ menu. It's remembered on each device.
  • Attached images show a thumbnail; hover for a larger view.
  • Popups can be dragged: chat settings, workspace settings and New workspace.
  • Getting back from Settings: "← Back to chat" at the top left; the byob wordmark goes back too.

For plugin authors

  • Plugin tools can declare their access (read, write or execute), so approvals treat them like built-in tools.
  • Native backends receive their plugin's secret settings.

v0.3.1

Choose a tag to compare

@Scronkfinkle Scronkfinkle released this 12 Nov 00:59

HTML apps now work out of the box on every platform, Windows starts reliably on Intel GPUs, and the README finally shows what byob does.

Batteries included: HTML apps in every download

The full archives (byob-…) now include byob-artifact-host, the Servo renderer that draws the HTML apps the model writes inline beside the chat. Before, that needed a Nix build. The slim archives (byob-slim-…) are still byob on its own; without the renderer, HTML apps open in your browser.

Windows

  • Starts on Intel GPUs. byob now draws with DX12 when it's available. Intel's Vulkan driver could close the window at startup. WGPU_BACKEND still overrides the choice.
  • HTML apps render inline, with or without a GPU. The renderer draws through ANGLE (Direct3D 11), falling back to Windows' built-in software rasterizer. That covers VMs, Remote Desktop and machines without a GPU driver. ANGLE's libEGL.dll and libGLESv2.dll ship next to it, with LICENSE-ANGLE.

Fixes

  • HTML apps no longer stall when a library prints to the renderer's output. The channel between byob and the renderer now tolerates stray text: it's skipped, and logged as "artifact host printed: …". The reason a renderer stops is shown on the app card. Older renderers and older byob builds still work with the new ones.
  • Each reply shows one card per artifact, on its last change. A sheet edited 24 times in one reply used to leave 24 cards. The version picker still lists every version.
  • Settings: the title and Close button stay put while you scroll.

Also

  • New README with a recorded session and screenshots, regenerated by scripts/readme-media.sh.
  • Each release archive is now its own download, with .sha256 checksums.

Install

Download an archive below. byob-… has everything: the browser UI (byob --serve) and the HTML app renderer (byob-artifact-host; keep it next to byob). byob-slim-… is byob alone. Each has a .sha256 next to it.

Or cargo install byob (crates.io; without the renderer), or nix run github:Scronkfinkle/byob/v0.3.1.

Full Changelog: v0.3.0...v0.3.1

byob 0.3.0 — everything is a plugin

Choose a tag to compare

@github-actions github-actions released this 11 Nov 18:09

byob's built-in features now ship as plugins on the same API anyone gets, and plugins can do far
more than add tools: draw UI, sit in the turn pipeline, run long-lived backends, render artifacts.

Breaking: protocol 13 (open, versioned: major must match, minors and capabilities are
additive from here on). Start fresh — 0.2.x profiles aren't migrated. Old browser tabs are told
to reload.

Plugins can now

  • Draw UI with declarative view trees drawn natively (desktop and browser): a side pane, a
    header status chip, a settings section, cards on tool steps, artifact bodies. Includes a
    virtualized, editable grid. See docs/views.md.
  • Run a backend: a long-lived process (JSON lines; Python helper byob_plugin.py, per-plugin
    venv from python.requirements) or in-tree Rust ("backend": {"native": …}). State stays in
    the process; faults and stderr reach the model so it can fix its own plugin.
    See docs/plugins-backend.md.
  • Hook the turn: before_prompt, before_request, before_tool_call, after_tool_call,
    on_turn_end — observe, change, block.
  • Add artifact types and renderers keyed by content type (native, view tree or web page).
  • Provide workspace environments (Nix/pixi/mise/containers are themselves plugins now).
  • Web views and MCP Apps: HTML panes and cards with a bridge (tools/call through the
    approval gate, model context, theme).

Built-ins are bundled plugins

Prompt, core tools, artifacts, charts, images, markdown, HTML apps, compaction, subagents,
environments, workspace instructions and spreadsheets. Fork any of them to your global plugins
and edit it ("Fork to edit" in Settings → Plugins, or ask byob).

Spreadsheets

A native spreadsheet plugin (IronCalc): .xlsx/.csv/.tsv as editable grids beside the chat, with
tools to describe, read, write, fill, restructure and format sheets; every write recalculates and
reports errors back to the model.

Also

  • Deletes are permanent (chats, artifacts, workspace folders; SQLite secure_delete).
  • Broken plugins can be found, read and fixed from a chat.
  • Settings are grouped into cards.
  • Windows: links open without a shell; Python backends speak UTF-8.
  • Hardening from a full audit: output caps that hooks can't bypass, hidden tools can't be called,
    approval cards reflect hook-rewritten arguments, bounded queues/caches for plugins and views,
    backend crashes detected even when a child holds its pipes, frames over the remote cap degrade
    gracefully instead of vanishing.

Install

cargo install byob (crates.io), or download an archive below: byob-… has the browser UI built in (byob --serve), byob-slim-… doesn't.

Full Changelog: v0.2.1...v0.3.0

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 10 Nov 21:53

Full Changelog: v0.2.0...v0.2.1

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 21:16

What's Changed

New Contributors

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 13:01