bin (binary) + bazaar (market) — a tiny local marketplace that trades release binaries.
Binzaar is a single-binary, local "app store" for Go micro-apps. It browses a GitHub-hosted
catalog, installs the right release binary for your OS/architecture with SHA-256 verification, and
tracks, updates, re-verifies, and uninstalls what you've installed — plus scaffolds new micro-apps
from templates and can drop an embedded Claude Code starter kit into any directory
(binzaar init).
One shared domain, three faces:
- a tview terminal UI for interactive browsing and management,
- an MCP stdio server so LLM clients can drive the same use-cases,
- an embedded bbolt database — no server, no cgo, just one local data file.
Binzaar is online-only — the catalog is always fetched live; only your installs and the app's own
config are persisted. See docs/SPECIFICATIONS.md for the full product
contract.
- Standalone micro-app, shipped as one binary. A single executable that runs completely locally — no daemon, no embedded web server, no second process required to function.
- No SaaS, no accounts, no backend. Everything lives on your machine; the only persistence is a local embedded database (bbolt) holding your installs and config. Your data never leaves the box.
- Full MCP support. Every use-case is exposed over an MCP stdio server, so an LLM client can browse, install, update, verify, and scaffold on your behalf — the exact same surface the TUI uses.
- Terminal-native. A tview TUI gives you interactive browse-and-manage entirely in your shell; no GUI, no browser.
- One domain, three faces. TUI · MCP · embedded bbolt all sit over a single use-case layer, so the human and the LLM drive identical behavior.
- Trust by default. Installs match your host
GOOS/GOARCHautomatically and are SHA-256 verified against the release's checksums before anything lands on disk; unverifiable assets are refused unless you explicitly allow them. - Online-only, GitHub-backed. The catalog and every binary/tarball come live from GitHub —
outbound HTTPS client I/O only (like
gitorgo install), never a hosted service. - Self-hosting. Binzaar lists itself in the catalog, so it installs and updates itself alongside the apps it manages.
- A forge, not just a shelf. Scaffold brand-new micro-apps from catalog templates and hand off
to the spec-driven
/product-ideaworkflow, or drop the embedded Claude Code kit into any directory withbinzaar init. - Self-growing via Claude Code. Binzaar doesn't only distribute apps — it grows the catalog.
Scaffolding initiates an application with Claude Code's spec-driven workflow
(
/product-idea→/app-init→/app-spec-sync), so each new micro-app is born in the same shape, specified before it's built, and can be published back to the marketplace it came from — the store expands itself. - Spec is the contract.
docs/SPECIFICATIONS.mddefines observable behavior; code and spec change together.
curl -fsSL https://raw.githubusercontent.com/Techthos/binzaar/refs/heads/main/scripts/install.sh | bashThe installer detects your OS/arch, downloads the latest release binary, verifies its SHA-256
against the .sha256 sidecar, and installs it as microapp-binzaar into
~/.local/share/binzaar/bin (warning if that directory is not on your PATH).
Environment overrides:
| Variable | Default | Purpose |
|---|---|---|
BINZAAR_VERSION |
latest |
Release tag to install (e.g. v0.2.0) |
BINZAAR_INSTALL_DIR |
~/.local/share/binzaar/bin |
Target directory |
BINZAAR_REPO |
Techthos/binzaar |
owner/name to install from |
BINZAAR_GITHUB_TOKEN |
— | Token for private repos / higher rate limits (GITHUB_TOKEN also honored) |
- Go (toolchain that satisfies
go.mod). - Optional, for
make fmt/make lint:go install mvdan.cc/gofumpt@latest go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest
makereports which are missing rather than failing silently.
make build # go build ./...
make run # go run .
make test # go test ./... -race -cover
make fmt # gofumpt -w .
make lint # golangci-lint run
make tidy # go mod tidy
make check # fmt + tidy + lint + test, in sequenceRun a single test:
go test ./... -run TestName -race -vBINZAAR_GITHUB_TOKEN— optional GitHub token; raises rate limits and enables private repos. Anonymous access is used when unset.
This repo starts flat (main.go) and grows internal/ packages as the spec is implemented:
models ← db ← server
↑
tui
internal/models is storage-agnostic; internal/db is the only package that touches bbolt; both
internal/server (MCP) and internal/tui go through internal/db. See CLAUDE.md and
.claude/rules/ for the layer rules.
Built and maintained by Techthos.