Fetching and serving by @timburks.me. Application superpowers on the Envoy proxy.
Sidecar is a tiny Go package that can be used to make clients and servers that use the gRPC wire protocol.
Replace Hugo with a custom site builder.
IO has built-in support for the ACME protocol, making TLS a breeze.
AI hucksters want to sell us agents, but what we really need is agency.
The open source ladder is leaning on the wrong wall.
How I use Bluesky to easily and securely preview a software product to users.
Work-in-progress on an ATProto PDS.
It's the cornerstone of identity on Bluesky. What could possibly go wrong?
Easily call XRPC APIs from your Go code and the command line.
Build an AT Protocol PDS the hard way (from scratch).
Build and distribute IO in Debian packages.
Distribute IO builds for MacOS using Homebrew.
Get IO working on Macs.
Store IO state and temporary files in standard locations.
Use gcr.io/distroless and self-built Envoys to have more control and to reduce dependencies, vulnerabilites, and image size.
Since Envoy will always depend on libc, it seems reasonable for IO to also.
Use the Charm logger consistently through IO.
I love the ideas behind this lightweight distribution, but it's challenging in practice.
One of the most dangerous things that you can do as a developer is build a third-party SDK into your app.
Replace Connect with a new, simple, transparent Go gRPC library.
Exploring gRPC and connectrpc with a simple echo service.
IO doesn't just manage gRPC APIs, gRPC makes IO go.
Remove and abandon integration with Google's Service Infrastructure APIs.
Here's how I self-host a gRPC-based web application with IO.
You're protecting your secrets with Vault, so why are you handing them out to your applications?
How I set up my Ubuntu laptops to run Nomad and Vault.
Use github.com/lestrrat-go/jwx/v3 for all JWT operations.
Keep third-party dependencies at a minimum.
No third-party SDKs are used by IO to call networked APIs.
Manage node configurations with Go and ssh.
Use OpenTelemetry and Grafana for metrics, logging, and tracing.
Enforce workload identities with IO and your own identity server.
Reduce dependencies, vulnerabilites, and image size.
Keep a record of significant decisions that have been made or are in progress.
Build AT Protocol apps better with IO.
Let's use our droplet running Nomad and IO to host a Bluesky Personal Data Server.
Now we can have a powerful presence in the cloud.
Here's why IO builds on Envoy.
IO and Nomad work so well together, you'll think they were made for each other.
Implementing OAuth can be a hassle. IO did it for you.
See what IO can do for your homelab.
Use DockerHub for container distribution.
Service meshes are The Matrix. IO is an Iron Man suit.
You're running IO, now what?
Here's how previewers can get started running IO.
The best way to run IO is with its Docker container. Here's how.
Here are the HTTP header parameters that IO uses.
Controlling IO from the command line.
Here's how you can configure IO using its HCL-based configuration language.
I didn't like proxies until I made this one.
Use SCP and SFTP to configure and observe IO.
Use SSH to make the IO TUI available to remote users.
Prefer DigitalOcean for online operations and examples.
Use Google Workspace to host agent.io email and docs.
Initially release IO in a licensed private preview with telemetry.
Build Vault integration and use Vault to manage secrets.
All protobuf support code that IO uses is generated within the project.
Consider using Zig for future projects that call for high performance with limited dependencies.
Build support for AT Protocol Authorization directly into IO.
Build support for OAuth into IO.
Build Nomad integration and use Nomad to manage containers.
Configure IO with the Hashicorp Configuration Language.
Build support for the ACME protocol into IO to automatically provision SSL certificates.
Use Hugo and Blowfish to build web sites.
Use Google App Engine, but minimally, focusing on static site publication with minimal backend automation.
Use SQLite for IO internal storage and general data persistence.
Use Bubble Tea to build a terminal user interface for IO.
Use Connect RPC instead of Google's Go gRPC library.
Use "IO" to clearly describe the project's goals.
Use Linux Abstract Sockets for local communication.
IO is an Envoy controller and Envoy is a core component of IO.
Hold on Rust investigations. Rust doesn't seem to be a good fit for our current needs and practices.
Thoroughly explain and evaluate the Service Infrastructure APIs.
Use Go for all significant code development.
Keep all Agent IO code in the `agentio` org on GitHub.
Build something for developers that makes it easier and safer to work with APIs.
Use the agent.io domain for Agent IO.
Use GitHub for source code management and a few lifecycle-related tasks.