Installation
Tako is a Go module. There's no CLI tool to install, no daemon to run, no config file to set up before you start. You just go get it.
Requirements
- Go 1.26 or later — Tako uses
max()builtin and other features from recent Go versions. - A terminal that supports ANSI escape codes (basically every modern terminal on macOS, Linux, and Windows Terminal).
Adding Tako to Your Project
go get github.com/takoterm/takoThat pulls the framework and its dependencies (Bubble Tea, Lipgloss, Bubbles, fsnotify, and the WebSocket library for the dev inspector).
Project Layout
There's no enforced project structure. The simplest possible Tako app is just a main.go:
myapp/
├── go.mod
├── go.sum
└── main.goIf you decide to use the plugin system later, plugins live alongside or next to your main package:
myapp/
├── go.mod
├── go.sum
├── main.go
└── plugins/
└── myplugin/
├── plugin.go ← Manifest declaration
├── init.go ← Auto-registration via init()
└── lifecycle.go ← Business logicPlugins can also live in their own Go modules (with go.mod) and be imported as dependencies — the same pattern used by the example/plugins/ in this repo. This is useful if you want a truly external plugin ecosystem where third parties publish and version their plugins independently.
Verifying the Installation
Create a minimal main.go:
package main
import (
"log"
"github.com/takoterm/tako"
)
func main() {
app := tako.NewApp()
if err := tako.Run(app); err != nil {
log.Fatal(err)
}
}Run it:
go run main.goYou should see the default fallback screen:
Tako Framework: No base UI bound. Press ctrl+c to exit.That means the framework booted correctly. No renderer was registered, so it showed the fallback. In the next section we'll hook up an actual UI.
What Gets Created on First Run
On first run, Tako creates a .tako/ directory next to your main.go (when running via go run) or next to the binary. This is the app's home directory:
.tako/
├── tako.log ← All framework + plugin log output
├── kv.json ← Persistent key-value store
└── run/ ← PID files for the dev inspectorYou'll want to add .tako/ to your .gitignore.
.gitignore Snippet
.tako/Up next: 02.02 — App Initialization — we'll look at
tako.NewApp(),app.Boot(), and what each step actually does so you know exactly what's happening before your plugins load.
