tiny

command module
v0.4.41 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2026 License: MIT Imports: 2 Imported by: 0

README ΒΆ

β—‡ tiny

Self-hosted AI agents on your own Kubernetes.
Prompt one in your editor and it runs as real workloads. Your cluster, your keys, your data.

release go MIT building in the open


tiny is the local front door to the Tiny Systems agent runtime. Point it at any cluster you can kubectl into, describe an agent from your editor, and watch it build itself and run as real pods. Nothing leaves your cluster. 🏠

🌱 Early days. The runtime, SDK, operator, and modules are production-tested; this CLI is the new front door that ties them together. The roadmap says what works today and what's next.

πŸ’‘ The idea

Most agent frameworks are a Python library, a hosted API, or a Docker-Compose box. tiny is a different shape: an agent is a set of real Kubernetes workloads the operator reconciles, and you build it by prompting from Claude Code, Cursor, or any MCP client β€” instead of writing glue.

$ tiny

  β—‡ tiny  self-hosted AI agents on your own Kubernetes

  context minikube   namespace tinysystems
  project playground
  serving http://localhost:7776/mcp
  editor http://localhost:7775   β†’ open in your browser

  Connect Claude Code (one-time):

    claude mcp add -s user --transport http tiny http://localhost:7776/mcp

  Ctrl-C to stop Β· tool calls stream below.

One process serves both surfaces: the MCP endpoint your editor drives and the browser editor that mirrors what the agent builds β€” live, over the same cluster state. You prompt on the right and watch it materialize on the left. ✨

πŸ”’ Why self-hosted

  • 🏠 Your cluster. Agents run where your data already lives β€” no round-trip to someone else's cloud.
  • πŸ”‘ Your keys. LLM calls use the key you set on the agent. tiny never holds it, and pinned sample data is secret-redacted before it ever touches etcd.
  • πŸ“¦ Real workloads. Every capability is a Helm-installable module reconciled by an operator, not a function in a hosted sandbox. kubectl get pods shows you your agent.
  • ⚑ Empty to running. Start from a bare kind, k3s, or cloud cluster. tiny up provisions the broker, the operator, and core modules. Anything else installs on demand β€” including automatically when a prompt-built agent reaches for a capability it doesn't have yet.
  • βœ… Built for agents that build. Flows validate green on the first build_flow call (schemas are derived, sample data auto-scaffolds), signals wait for the flow to wake before firing, and every warning reaches the model β€” so your editor's agent ships working automations instead of chasing ghosts.

πŸ“¦ Install

# Homebrew
brew install tiny-systems/tap/tiny

# or grab a binary from Releases, or:
go install github.com/tiny-systems/tiny@latest

Update later with tiny upgrade (or brew upgrade tiny).

πŸš€ Quick start

tiny up            # provision the runtime onto your current cluster (asks first)
tiny               # serve the MCP endpoint + browser editor

Connect your editor once β€” tiny prints the exact command on start:

claude mcp add -s user --transport http tiny http://localhost:7776/mcp

Then, in your editor: "an HTTP endpoint that summarizes the JSON I POST and alerts Slack if the sentiment is negative" β€” and watch it build on the canvas. 🎨

🧰 Commands

command what it does
tiny serve the local MCP endpoint + browser editor, stream tool calls
tiny up provision the runtime (NATS/JetStream broker + operator + core modules)
tiny install <module> add a capability module from the configured repos
tiny repo … manage module repos β€” Helm-style static indexes, add your own
tiny status show the runtime + installed modules on the target cluster
tiny edit [flow] open the web canvas against your cluster
tiny upgrade update tiny to the latest release
tiny --print print the MCP client config and exit (don't serve)

Every mutating command shows the exact context and namespace it will touch and asks before it acts. Pass --yes to skip in CI, or --context / --namespace / --project to target explicitly. 🎯

🧩 How it fits together

  • βš™οΈ The operator reconciles agents into workloads and installs capability modules as Helm releases.
  • 🧱 Modules are the capabilities: LLM, HTTP, Kubernetes, databases, Slack, and more β€” each a small Go service the agent composes.
  • πŸ”Œ MCP is the prompt surface. tiny serves it locally against your kubeconfig; the hosted platform serves the same tools at mcp.tinysystems.io for teams.
  • πŸ‘€ The editor is the trust layer. You watch and inspect what you didn't hand-write.
  • πŸ“Έ Scenarios are the memory. Pin a real run as sample data (secrets redacted) and every edge validates against real shapes.

The runtime and SDK are open source. The hosted platform adds a team layer (shared workspaces, observability across clusters, managed clusters) for those who want it. tiny needs none of it.

πŸ—Ί Roadmap

  • βœ… v0.1 β€” up / install / status against your cluster, with the target-confirmation guard. Empty cluster β†’ working runtime from your terminal.
  • βœ… v0.2 β€” tiny (dev): the live MCP endpoint and browser editor in one process, streaming agent activity into the terminal as your editor drives. Prompt-built agents on your own cluster, no hosted account.
  • βœ… v0.3 β€” decentralized module repos (tiny repo β€” Helm-style indexes you can host anywhere), scenario pinning with secret redaction, first-build-green validation.
  • πŸ”­ next β€” richer canvas, more modules, smoother day-2 (upgrades, multi-cluster).

Follow along or open an issue β€” this is being built in the open. πŸ› 

πŸ“„ License

MIT. Depends on the Tiny Systems Module SDK.

Documentation ΒΆ

Overview ΒΆ

Command tiny is the local front door to the Tiny Systems agent runtime: install it onto your own Kubernetes cluster, drive it by prompt from your editor, and watch agents assemble and run as real workloads β€” your cluster, your keys, your data.

Directories ΒΆ

Path Synopsis
internal
backend
Package backend selects between the two ways mcp-server can talk to a Tiny Systems cluster: directly via kubeconfig, or indirectly through the hosted platform-api with a developer token.
Package backend selects between the two ways mcp-server can talk to a Tiny Systems cluster: directly via kubeconfig, or indirectly through the hosted platform-api with a developer token.
backend/kube
Package kube builds the mcp-server execution bundle using direct Kubernetes access via kubeconfig.
Package kube builds the mcp-server execution bundle using direct Kubernetes access via kubeconfig.
catalog
Package catalog resolves a module NAME to the coordinates `tiny` needs to install it, using the public, unauthenticated Tiny Systems catalog at api.tinysystems.io.
Package catalog resolves a module NAME to the coordinates `tiny` needs to install it, using the public, unauthenticated Tiny Systems catalog at api.tinysystems.io.
flow
Package flow is tiny's local implementation of the platform FlowService β€” the gRPC/gRPC-web API the browser editor talks to.
Package flow is tiny's local implementation of the platform FlowService β€” the gRPC/gRPC-web API the browser editor talks to.
installer
Package installer implements sdktools.ModuleInstaller for kubeconfig mode: it lets an agent install a capability module on the fly, mid-build, through the MCP endpoint β€” resolving from the configured repos (default: the public index) and helm-installing via the exact same repo-model path as `tiny install`.
Package installer implements sdktools.ModuleInstaller for kubeconfig mode: it lets an agent install a capability module on the fly, mid-build, through the MCP endpoint β€” resolving from the configured repos (default: the public index) and helm-installing via the exact same repo-model path as `tiny install`.
kube
Package kube wires up the Kubernetes client used by all adapters.
Package kube wires up the Kubernetes client used by all adapters.
mcp
Package mcp implements a minimal Model Context Protocol server.
Package mcp implements a minimal Model Context Protocol server.
project
Package project resolves the active project for a tiny session.
Package project resolves the active project for a tiny session.
prompt
Package prompt holds the public-MCP-specific appendix that is appended to the SDK's core prompt when get_instructions is called.
Package prompt holds the public-MCP-specific appendix that is appended to the SDK's core prompt when get_instructions is called.
provision
Package provision installs the Tiny Systems runtime and capability modules onto a cluster by embedding the Helm Go SDK (via mittwald's go-helm-client) β€” no shelling out to a `helm` binary, no hosted platform.
Package provision installs the Tiny Systems runtime and capability modules onto a cluster by embedding the Helm Go SDK (via mittwald's go-helm-client) β€” no shelling out to a `helm` binary, no hosted platform.
repo
Package repo implements the decentralized, Helm-style module distribution client described in docs/design/module-distribution-v2.md: repos are static index files, the source of truth is the module repo + its signed image, and the platform is demoted to an optional aggregator.
Package repo implements the decentralized, Helm-style module distribution client described in docs/design/module-distribution-v2.md: repos are static index files, the source of truth is the module repo + its signed image, and the platform is demoted to an optional aggregator.
Package web embeds the built flow-editor SPA (a thin host around @tinysystems/editor) and serves it as an http.Handler.
Package web embeds the built flow-editor SPA (a thin host around @tinysystems/editor) and serves it as an http.Handler.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL