Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 18:28
· 88 commits to main since this release
0c46c75

This release gives you control over what a sandbox can reach and see: network
allow/deny rules, extra mounts, port forwards and per-sandbox secrets, all
configurable from .firebrick.yml or the new fbk subcommands. Sandboxes also
come up ready to work, with Docker and the project's mise tools installed.

Breaking changes

  • fbkd keeps its microsandbox runtime, images, database and sandboxes in
    $XDG_STATE_HOME/firebrick/msb (~/.local/state/firebrick/msb) instead of
    ~/.microsandbox, so a separately installed msb can no longer break it.
    Sandboxes created by earlier versions stay in ~/.microsandbox and no longer
    show up in fbk ls; recreate them after upgrading. Images are pulled again on
    first start. A non-empty MSB_HOME still takes precedence. (#101)

Features

  • fbk init writes a default .firebrick.yml for the current directory. (#89)
  • Restrict a sandbox's outgoing traffic with a network section in
    .firebrick.yml: with enforce: true, only hosts, domains, IPs and CIDR
    ranges in allow are reachable, and deny rules win. Blocked HTTP and HTTPS
    requests get a page that names the host. (#92)
  • fbk network allow, fbk network deny and fbk network policy enable|disable change the rules of an existing sandbox and update
    .firebrick.yml. (#97)
  • fbk network disable removes a sandbox's network device entirely; fbk network enable restores it. (#103)
  • Mount extra host directories into the sandbox with a mounts section in
    .firebrick.yml, optionally read-only. Host paths may start with ~ or
    ~user. (#95)
  • Forward host ports to servers in the sandbox with a ports section in
    .firebrick.yml, or live with fbk port forward <host>:<guest> and fbk port rm. (#96, #99)
  • Secrets can be scoped to one sandbox with fbk secret set --scope sandbox; a
    sandbox-scoped secret overrides the global one with the same name in that
    sandbox only. (#100)
  • xdg-open and $BROWSER inside the sandbox open http and https URLs in the
    host browser, for example for device login flows. Local addresses are refused,
    and enforced network rules apply. (#104)
  • fbk shows a progress bar while it pulls the sandbox image. (#102)
  • The firebrick-base image includes Docker, and every sandbox gets a dedicated
    disk for /var/lib/docker, sized with volumes.docker in .firebrick.yml.
    (#83, #84)
  • fbkd trusts the workspace's mise config and runs mise install when a
    sandbox starts, so the project's tools are ready. Set mise: false in
    .firebrick.yml to turn it off. (#85)

Fixes

  • fbk start and fbk run refuse to reuse a sandbox that mounts a different
    working directory, instead of silently giving the agent access to another
    project's files when two directories hash to the same name. (#87)

What's Changed

  • feat(daemon): give every sandbox a dedicated ext4 disk for /var/lib/docker by @wmeints in #83
  • feat(images): install Docker from Docker's apt repository in firebrick-base by @wmeints in #84
  • Install the workspace's mise tools when a sandbox starts by @wmeints in #85
  • test(daemon): show the daemon's logs in the vm-tests output by @wmeints in #86
  • feat(cli): refuse to reuse a sandbox that mounts another directory by @wmeints in #87
  • feat(cli): add fbk init to write a default .firebrick.yml by @wmeints in #89
  • Enforce network allow/deny rules from .firebrick.yml by @wmeints in #92
  • Forward host ports to the sandbox from .firebrick.yml by @wmeints in #96
  • feat(spec): mount extra host directories into the sandbox from .firebrick.yml by @wmeints in #95
  • Add fbk network commands to change an existing sandbox's egress rules by @wmeints in #97
  • Add herdr skill for controlling Herdr panes and agents by @wmeints in #98
  • Add fbk port forward and fbk port rm that apply live and update .firebrick.yml by @wmeints in #99
  • Add a per-sandbox scope for secrets by @wmeints in #100
  • feat(daemon): keep the microsandbox home in firebrick's XDG state directory by @wmeints in #101
  • Show image pull progress when fbk creates a sandbox by @wmeints in #102
  • Add fbk network enable/disable to turn a sandbox's network off by @wmeints in #103
  • test(daemon): let vm-tests runs share the microsandbox home safely by @wmeints in #106
  • feat(daemon): open http/https URLs from the sandbox in the host browser by @wmeints in #104
  • feat(agents): add a test-reviewer agent for test quality and test gaming by @wmeints in #108
  • Install protoc through mise by @wmeints in #110
  • feat(agents): add an implementation-reviewer agent and a review-branch workflow by @wmeints in #111
  • Add gh and Claude Code to the mise toolset and pin all tool versions by @wmeints in #112
  • docs: add the website design mockups by @wmeints in #113
  • Add a create-release skill that releases through a version bump PR by @wmeints in #114
  • Set up the Astro website with its checks and reviewers by @wmeints in #115
  • chore: release v0.4.0 by @wmeints in #116

Full Changelog: v0.3.0...v0.4.0