Skip to content
LogoLogo

Roadmap

Dates are intentions, not promises. For the current feature and compatibility status, see the overview and changelog. Releases are small and frequent; 0.1.0 (2026-10-15) is the first milestone.

M0: design — done for v0

  • Architecture document
  • Initial decisions recorded (ADR 0001–0007)
  • RFCs opened for the remaining open questions in architecture.md
  • OS Skills manifest format v1 (v0 is in use)

M1: the agent seat — mechanism proven, in daily use on the dev machine

  • slate-desktop: transient seat with virtual pointer and keyboard
  • Per-window capture via ext-image-copy-capture, cropped to the window geometry
  • MCP server: windows / screenshot / click / move / scroll / type / key / close / focus / window_set / arrange / launch / seats / status / takeover_cancel
  • Unicode typing via generated keymaps; ASCII through a real US keymap (Firefox ignores made-up keycodes); key combos
  • Long-lived agent seat: slate-desktop daemon as a supervised user service (apps only honour seats present at their start)
  • User-seat fallback for first-seat-only toolkits (GTK4), gated as Confirm
  • Takeover indicator: panel blinks "controlling", sway controlling mode, Esc hands control back and blocks retries
  • Focus-aware input: per-seat focus from the compositor, focus-then-verify before typing, post-action screenshots
  • The agent's background screen: headless output, desktop_launch where, desktop_show / desktop_hide, per-output pointers
  • Demos: Claude Code and Codex drive a terminal and Firefox through the agent seat from slash
  • AT-SPI2: elements, read, element actions and EditableText over the bus; GTK3, GTK4, Firefox verified
  • sway patch: security-context clients see only the agent seat (ADR 0007)
  • Ghost cursor rendering (sway patch)
  • Toolkit compatibility list: Qt, Chromium/Electron, Flatpak (GTK3 and foot verified; GTK4 needs the user seat)

M2: slated — core done

  • Approval broker serving Claude Code's permission-prompt tool
  • Tier policy (Observe / Reversible / Confirm), command-aware shell classifier, ~/.config/slate/policy.toml
  • /auto on|off: per-session bypass, audited
  • Audit log, slate audit, /audit, /tasks
  • btrfs snapshot before the first non-observe call of a task, /undo, /undo --preview, pruning
  • Memory: remember / recall / forget MCP tools, /remember and /memories, listed at the start of every task
  • systemd user service, notifications for terminal tasks, quiet tasks for the prompt
  • Root for system changes with the user's consent: sudo through the slate-askpass dialog
  • Codex approvals (Codex exec has no approval channel yet; runs under its sandbox)
  • Session context server (active windows, recent outputs); context is a per-turn delta today
  • Agent identity: separate uid / Landlock / cgroup

M3: slash — done for v0

  • Input routing: bare / / / ! / @
  • Backend adapters: Claude Code (stream-json, session resume, hooks, permission tool, MCP) and Codex (exec --json, thread resume, MCP)
  • ! in the real shell on a pty; output captured for the agent; cwd and exported env persist
  • Login-shell compatibility: non-interactive execs the POSIX shell; installed as /run/current-system/sw/bin/slash
  • Answer-first rendering, tool calls as one-liners, /verbose, streaming text, thinking events when the backend streams reasoning
  • Model selection (default sonnet), /model, /agent
  • slash --serve: JSON-lines session protocol for GUI clients
  • Identity prompt: slash is the shell of SlateOS; per-turn context delta
  • Conversation history across prompt sessions

M3b: the desktop

  • Phase 1: sway as a stacking desktop, waybar, fuzzel, mako, wallpaper, greetd autologin, services.slate.desktop.enable
  • Phase 2: the Slate prompt (Siri-style overlay: one exchange at a time, approvals as buttons, passive reappearance, click-elsewhere dismiss), panel status module, settings app (display with confirm-or-revert and a HiDPI preset, sound, network, memories)
  • Phase 3: SlateOS identity, quiet dark theme (Inter, JetBrains Mono, Font Awesome), AI settings page (backend, models, sign-in, verbose, bypass approvals)
  • Slate's own notification surface for terminal tasks (mako today)
  • Rust rewrite of the prompt and settings once the design settles
  • Agent-aware window markers and "hand this window to the agent"

M4: SlateOS as a product

  • NixOS module + flake: services.slate.enable, login shell, user services, desktop profile, SlateOS branding
  • Base distribution: NixOS (ADR 0004)
  • Root with consent (sudo askpass); polkit agent for GUI requests still open
  • Compositor patches upstreamed or carried (seat filtering, ghost cursor)
  • Base OS Skills: browser, files, mail, calendar, printing, Bluetooth, power
  • Installable image and installer (homes as user-owned btrfs subvolumes, skills preinstalled, agent sign-in on first boot)
  • 0.1.0, the first milestone (2026-10-15)

Later

  • Multi-agent, multi-seat
  • Skill sharing
  • Non-wlroots compositor support if the protocols land upstream