Agent IO

Fetching and serving by @timburks.me. Application superpowers on the Envoy proxy.

24 followers25 following79 stories

Longform Stories

Lightweight gRPC on the Go Standard Library

Sidecar is a tiny Go package that can be used to make clients and servers that use the gRPC wire protocol.

3d ago·14 min read·2648 words

Drop Hugo

Replace Hugo with a custom site builder.

Jun 11·2 min read·354 words

IO's Custom ACME Client

IO has built-in support for the ACME protocol, making TLS a breeze.

May 14·5 min read·898 words

Agency over Agents

AI hucksters want to sell us agents, but what we really need is agency.

Apr 27·7 min read·1204 words

Software Licenses and Workers' Rights

The open source ladder is leaning on the wrong wall.

Apr 2·7 min read·1323 words

Managing a Beta with Bluesky

How I use Bluesky to easily and securely preview a software product to users.

Mar 27·4 min read·693 words

Building a PDS the Hard Way

Work-in-progress on an ATProto PDS.

Mar 18·3 min read·480 words

Risks of DID:PLC

It's the cornerstone of identity on Bluesky. What could possibly go wrong?

Mar 10·12 min read·2280 words

Better Go clients for the AT Protocol

Easily call XRPC APIs from your Go code and the command line.

Mar 8·11 min read·2097 words

Build an AT Protocol PDS

Build an AT Protocol PDS the hard way (from scratch).

Feb 1·2 min read·224 words

Debian packages

Build and distribute IO in Debian packages.

Jan 31·1 min read·11 words

Distribute MacOS builds with Homebrew

Distribute IO builds for MacOS using Homebrew.

Jan 31·1 min read·14 words

Add MacOS support

Get IO working on Macs.

Jan 6·2 min read·258 words

Conform to the XDG Base Directory Specification

Store IO state and temporary files in standard locations.

Jan 5·2 min read·400 words

Build Envoy and IO containers directly

Use gcr.io/distroless and self-built Envoys to have more control and to reduce dependencies, vulnerabilites, and image size.

Dec 3·1 min read·94 words

Use CGO, libc, and pure SQLite

Since Envoy will always depend on libc, it seems reasonable for IO to also.

Nov 10·2 min read·359 words

Use the Charm logger

Use the Charm logger consistently through IO.

Oct 26·1 min read·38 words

Hold on Alpine Linux

I love the ideas behind this lightweight distribution, but it's challenging in practice.

Oct 19·4 min read·702 words

Out-of-Process SDKs

One of the most dangerous things that you can do as a developer is build a third-party SDK into your app.

Oct 10·10 min read·1959 words

Build and Use Sidecar

Replace Connect with a new, simple, transparent Go gRPC library.

Oct 1·2 min read·311 words

What can we learn with a simple gRPC service?

Exploring gRPC and connectrpc with a simple echo service.

Sep 8·8 min read·1480 words

How IO runs on gRPC

IO doesn't just manage gRPC APIs, gRPC makes IO go.

Aug 23·5 min read·891 words

Drop Service Infrastructure

Remove and abandon integration with Google's Service Infrastructure APIs.

Aug 20·3 min read·521 words

These are my Memos on IO

Here's how I self-host a gRPC-based web application with IO.

Aug 6·4 min read·753 words

Let IO Handle your Secrets

You're protecting your secrets with Vault, so why are you handing them out to your applications?

Jul 30·8 min read·1458 words

Nomad+Vault to Go

How I set up my Ubuntu laptops to run Nomad and Vault.

Jul 26·4 min read·794 words

Use one JWT library

Use github.com/lestrrat-go/jwx/v3 for all JWT operations.

Jul 22·1 min read·70 words

Minimize Dependencies

Keep third-party dependencies at a minimum.

Jul 21·1 min read·137 words

No SDKs

No third-party SDKs are used by IO to call networked APIs.

Jul 5·1 min read·166 words

Use a Custom Fleet Manager

Manage node configurations with Go and ssh.

Jul 3·1 min read·168 words

Use OpenTelemetry

Use OpenTelemetry and Grafana for metrics, logging, and tracing.

Jun 20·4 min read·625 words

DIY Workload Identity

Enforce workload identities with IO and your own identity server.

Jun 19·7 min read·1400 words

Use Distroless Envoy images

Reduce dependencies, vulnerabilites, and image size.

Jun 19·1 min read·131 words

Record Decisions

Keep a record of significant decisions that have been made or are in progress.

Jun 18·1 min read·128 words

A Simpler Statusphere

Build AT Protocol apps better with IO.

Jun 13·11 min read·2142 words

Nomad, IO, and a PDS

Let's use our droplet running Nomad and IO to host a Bluesky Personal Data Server.

Jun 12·6 min read·1090 words

Droplet Superpowers

Now we can have a powerful presence in the cloud.

Jun 11·8 min read·1469 words

IO's Arc Reactor is Envoy

Here's why IO builds on Envoy.

Jun 10·4 min read·676 words

IO and Nomad, BFFs

IO and Nomad work so well together, you'll think they were made for each other.

Jun 9·5 min read·997 words

Easy OAuth with IO

Implementing OAuth can be a hassle. IO did it for you.

Jun 8·6 min read·1156 words

The Gateway to your Homelab

See what IO can do for your homelab.

Jun 7·4 min read·731 words

Use DockerHub

Use DockerHub for container distribution.

Jun 5·1 min read·66 words

Matrix or Mech Suit?

Service meshes are The Matrix. IO is an Iron Man suit.

Jun 4·3 min read·488 words

A Quick Tour of IO

You're running IO, now what?

Jun 3·6 min read·1060 words

Get Started with IO

Here's how previewers can get started running IO.

Jun 2·3 min read·505 words

Running IO with Docker

The best way to run IO is with its Docker container. Here's how.

Jun 2·3 min read·425 words

IO Header Parameters

Here are the HTTP header parameters that IO uses.

Jun 1·2 min read·319 words

Ask Me Anything

Jun 1·1 min read·97 words

IO Command-Line Options

Controlling IO from the command line.

Jun 1·1 min read·134 words

IO Configuration Reference

Here's how you can configure IO using its HCL-based configuration language.

Jun 1·12 min read·2234 words

Your Friendly Neighborhood Network Proxy

I didn't like proxies until I made this one.

Jun 1·8 min read·1574 words

Use SCP and SFTP

Use SCP and SFTP to configure and observe IO.

May 20·1 min read·96 words

Use SSH to connect to IO

Use SSH to make the IO TUI available to remote users.

May 18·1 min read·99 words

Use DigitalOcean

Prefer DigitalOcean for online operations and examples.

May 15·1 min read·59 words

Use Google Workspace

Use Google Workspace to host agent.io email and docs.

May 12·1 min read·32 words

Release a Private Preview

Initially release IO in a licensed private preview with telemetry.

May 9·1 min read·118 words

Use Vault

Build Vault integration and use Vault to manage secrets.

Apr 14·1 min read·102 words

Internalize Protobuf Codegen

All protobuf support code that IO uses is generated within the project.

Apr 8·1 min read·128 words

Evaluate Zig

Consider using Zig for future projects that call for high performance with limited dependencies.

Mar 24·1 min read·161 words

Build AT Protocol OAuth Support

Build support for AT Protocol Authorization directly into IO.

Mar 22·1 min read·116 words

Build OAuth Support

Build support for OAuth into IO.

Mar 5·1 min read·97 words

Use Nomad

Build Nomad integration and use Nomad to manage containers.

Feb 25·1 min read·82 words

Use HCL

Configure IO with the Hashicorp Configuration Language.

Feb 23·1 min read·98 words

Build ACME Support

Build support for the ACME protocol into IO to automatically provision SSL certificates.

Feb 13·1 min read·95 words

Use Hugo

Use Hugo and Blowfish to build web sites.

Nov 7·1 min read·139 words

Use App Engine

Use Google App Engine, but minimally, focusing on static site publication with minimal backend automation.

Nov 7·2 min read·201 words

Use SQLite

Use SQLite for IO internal storage and general data persistence.

Oct 7·1 min read·102 words

Use Bubble Tea

Use Bubble Tea to build a terminal user interface for IO.

Sep 19·1 min read·88 words

Use Connect RPC

Use Connect RPC instead of Google's Go gRPC library.

Aug 31·1 min read·107 words

Name the proxy "IO"

Use "IO" to clearly describe the project's goals.

Aug 31·1 min read·48 words

Use Linux Abstract Sockets

Use Linux Abstract Sockets for local communication.

Jul 30·1 min read·63 words

Build an Envoy Controller

IO is an Envoy controller and Envoy is a core component of IO.

Jul 30·1 min read·96 words

Avoid Rust

Hold on Rust investigations. Rust doesn't seem to be a good fit for our current needs and practices.

Jul 22·2 min read·276 words

Document Service Infrastructure

Thoroughly explain and evaluate the Service Infrastructure APIs.

Jul 8·1 min read·84 words

Develop in Go

Use Go for all significant code development.

Jul 8·1 min read·101 words

Use the agentio GitHub organization

Keep all Agent IO code in the `agentio` org on GitHub.

Jul 7·1 min read·103 words

Scope the Project

Build something for developers that makes it easier and safer to work with APIs.

Jul 5·1 min read·98 words

Use the agent.io domain

Use the agent.io domain for Agent IO.

Jun 11·1 min read·127 words

Use GitHub

Use GitHub for source code management and a few lifecycle-related tasks.

Feb 19·1 min read·139 words