Decisions
This page lists decisions that have been made along the way of making IO. If you've heard of Architectural Decision Records, you know what this is about. For more background, see this decision.
Decisions are linked on Bluesky by @agent.io. Reply there to comment here.
Conform to the XDG Base Directory Specification
Store IO state and temporary files in standard locations.
Build Envoy and IO containers directly
·97 words·1 min
Use gcr.io/distroless and self-built Envoys to have more control and to reduce dependencies, vulnerabilites, and image size.
Use CGO, libc, and pure SQLite
Since Envoy will always depend on libc, it seems reasonable for IO to also.
Hold on Alpine Linux
I love the ideas behind this lightweight distribution, but it's challenging in practice.
Build and Use Sidecar
·311 words·2 mins
Replace Connect with a new, simple, transparent Go gRPC library.
Drop Service Infrastructure
Remove and abandon integration with Google's Service Infrastructure APIs.
Use one JWT library
Use github.com/lestrrat-go/jwx/v3 for all JWT operations.
Use OpenTelemetry
Use OpenTelemetry and Grafana for metrics, logging, and tracing.
Record Decisions
·131 words·1 min
Keep a record of significant decisions that have been made or are in progress.
Release a Private Preview
Initially release IO in a licensed private preview with telemetry.
Internalize Protobuf Codegen
All protobuf support code that IO uses is generated within the project.
Evaluate Zig
Consider using Zig for future projects that call for high performance with limited dependencies.
Build AT Protocol OAuth Support
·120 words·1 min
Build support for AT Protocol Authorization directly into IO.
Build ACME Support
Build support for the ACME protocol into IO to automatically provision SSL certificates.
Use App Engine
·204 words·1 min
Use Google App Engine, but minimally, focusing on static site publication with minimal backend automation.
Use Bubble Tea
Use Bubble Tea to build a terminal user interface for IO.
Build an Envoy Controller
·100 words·1 min
IO is an Envoy controller and Envoy is a core component of IO.
Use Linux Abstract Sockets
Use Linux Abstract Sockets for local communication.
Avoid Rust
Hold on Rust investigations. Rust doesn't seem to be a good fit for our current needs and practices.
Document Service Infrastructure
·88 words·1 min
Thoroughly explain and evaluate the Service Infrastructure APIs.
Use the agentio GitHub organization
·104 words·1 min
Keep all Agent IO code in the `agentio` org on GitHub.
Scope the Project
·103 words·1 min
Build something for developers that makes it easier and safer to work with APIs.