Skip to content
View coilysiren's full-sized avatar
🛠️
engineering software
🛠️
engineering software

Organizations

@bundler @WriteSpeakCode @urfave @coilyco-bridge @coilyco-flight-deck

Block or report coilysiren

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
coilysiren/README.md

I build agentic engineering platforms

Kai Ase Siren

I'm Kai Ase Siren, a senior platform engineer, ten-plus years in. I build the policy-bound platform layer that lets engineering teams develop, ship, and operate agentic systems safely. That layer is the four projects below, built as independent open-source work: bounded execution and egress in umbra, guarded MCP generation in mcp-beaver, context composition in agent-compose, and evaluation in housecast. The Kubernetes and observability systems underneath come from the day job and the two-site homelab described further down.

The throughline is developer infrastructure, and agents are its newest consumer. That has meant language-ecosystem tooling at Ruby Together, multi-cloud platforms at Textio, government infrastructure at Nava, and agent-facing observability and MCP surfaces at Kapwing.

Outside work, I run a two-site homelab and a public game server. Both are practical testbeds for the same platform, reliability, and observability questions I work on professionally.

coilysiren.me is the shorter, visual version of this project map.

What I ship

agent-compose // $ acompose - Compose agent personas and context

Picks the persona an agent runs as and delivers the composed bundle into the harness. It changes what the agent knows and how it is framed, never what it is allowed to do: the bundle is plain files you can read and diff before a run, carrying no credential, no mount, and no command.
housecast // roster.yaml - Agent context, cast from one roster

One YAML file declares every role. The bundle an agent gets and the scorecard that grades it are both cast from that file, so what gets tested and what ships are the same bundle.
mcp-beaver // .mcp.kdl - A MCP server generator with a natural flow

One guardfile in, one guarded MCP server out, which is the natural flow the name points at. An operation nobody declared has no tool and no endpoint, so a write-capable MCP server is only ever as wide as one small file you can read end to end.
umbra - occlusion for agent CLIs and APIs

A least privilege layer for agent command-line tools and HTTP requests, which stay occluded until a policy file grants them. Arguments are checked before the process starts, each command needs its own scope token, and every call lands in an append-only audit log.

Also active

Infrastructure

  • agentic-os - cross-platform agent operating layer with dotfiles, skills, guarded tooling, and repository validators.
  • infrastructure - infrastructure as code for my hosts and Kubernetes homelab, including Ansible convergence and observability.
  • Operator context and automation - the private skill catalogue, fleet inventory, and cross-repository coordination behind my agent environments.
  • Deployment control plane - the private Kubernetes declarations for always-on services across the homelab.

Product

  • sirens-echo - a Discord community agent harness. It answers only when a person mentions it in a channel it was granted, and a validator strips the greeting, the emoji, and the sign-off before anything posts.
  • Eco App 🌎 - server, jobs, replay, and telemetry for the Eco community.
  • Galaxy Gen 🌌 - procedural galaxy simulation in Rust and WebAssembly, rendered in the browser at galaxy-gen.coilysiren.me.
  • Many MCPs - narrow agent interfaces for personal finance, private feeds, games, browsers, project work, and adjacent systems.

Across all of it, the useful question is not whether an agent produced a diff. It is whether the system can explain what happened, recover from interruption, and prove the result.

Platform notes

The homelab spans two physical sites on one Tailscale mesh. The primary k3s cluster is the application and state plane. The second is the operations and recovery plane. GPU machines join on demand for local inference, while hosted frontier models handle work beyond the small local tier.

The durable choices are simple:

  • Isolate state and keep recovery on a different power and network path.
  • Put authentication, ingress, DNS, certificates, and secrets at explicit boundaries.
  • Make agent sessions, model traffic, services, and cross-site reachability observable.
  • Assume every compute node except the primary can disappear.

Core stack: Go, Python, TypeScript, Bash, and C#. AWS, Kubernetes, Terraform, Docker, and Tailscale. Prometheus, Grafana, Sentry, and OpenTelemetry. Codex, Claude Code, and MCP.

Elsewhere

coilysiren.me · Resume · Bluesky · X · LinkedIn

See also

Pinned Loading

  1. coilyco-flight-deck/umbra coilyco-flight-deck/umbra Public

    occlusion for agent CLIs and APIs. Declare what an agent may run, and everything you did not name stays unreachable.

    Go 1 1

  2. coilyco-flight-deck/housecast coilyco-flight-deck/housecast Public

    Agent context, cast from one roster. Change what a role may do and the evaluation that checks it moves with it, in the same commit.

    Python 1

  3. coilyco-flight-deck/mcp-beaver coilyco-flight-deck/mcp-beaver Public

    A MCP server generator with a natural flow. Renders one policy file into an MCP server, an HTTP tool API, a widget, and a helm release.

    Go 1

  4. coilyco-flight-deck/agent-compose coilyco-flight-deck/agent-compose Public

    Compose agent personas and context. Selects a role, its personality meld, the skills it can see, and the tools it gets, then materializes them as plain files.

    Go 1

  5. urfave/cli urfave/cli Public

    A declarative, simple, fast, and fun package for building command line tools in Go

    Go 24.2k 1.8k

  6. algo-zone algo-zone Public archive

    A workshop for algorithms and data-structure puzzles — pronounced like "auto zone"

    Python 12