The Problem
Deploying fullstack applications typically means stitching together separate concerns—functions, hosting, databases, object storage, and messaging—across different providers with different APIs. Tau (forked from Taubyte) packages these into a single workspace where developers and AI agents can define infrastructure and application code in one place, then push it to a local or production environment without managing the underlying plumbing.
What This Does
Tau is a collection of 9 self-contained projects, not one unified codebase. The substantial ones are pkg/ (1,849 files, the core library), services/ (480 files, the runtime components), and tools/ (542 files, CLI and build tooling). The README markets it as a "fullstack workspace for humans and AI agents" with functions, web hosting, KV databases, object storage, and pub/sub messaging.
Recurring techniques across the projects: Go for core logic (2,874 files), protocol buffers for service definitions (16 files), TypeScript and Python clients under pkg/spore-drive/clients/, and a local development simulation environment called "dream" (78 files). The cli/ directory (34 files) provides the user-facing entry point.
How It Is Wired
Execution starts at main in main.go:10, which reaches 7 functions. From there, the flow splits: Run in tools/tau/cli/run.go:8 is the CLI's command dispatcher, called from 5 places. The init function in dream/fixtures/dreamland.go:5 sets up the local simulation environment.
The internal call graph shows 103 resolved edges. The most-connected functions are New (called from 16 places), Write (9), Join (8), and Run (5). New is the hub—changing its signature breaks the most code. The clients/http/auth/git/client.go file defines New and is called from 15 other files, making it the widest blast radius for a single change.
The wiring for network effects is minimal: only 1 function makes an outbound network call, and 4 functions read or write files. tools/tau/lib/repository/push.go defines Push, which writes files—this is how application code gets sent to the runtime. The core/services/substrate/components/database/context.go defines Context, called from 4 files, and is the database abstraction layer.
How To Use It
Setup: Clone and build:
git clone https://github.com/moses-y/tau
cd tau
make build
Configuration: The CLI reads testConfig.yaml (see cli/app/fixtures/testConfig.yaml). The cli/app/parse_config.go handles config parsing. Environment variables are not documented in the repo.
Running it: Start with the CLI:
./tau start
The dream environment provides local simulation—use dream new universe to initialize a local test network before pushing applications.
Real-World Use
A developer defines a project with functions and storage, pushes it to the local dream environment, tests it, then deploys to production with the same workflow. The pkg/spore-drive/clients/ directory provides JS and Python SDKs for programmatic access to deployed services.
Code Health & Issues
Static analysis found 7 findings (0 critical, 1 high, 5 medium, 1 low):
- High – Unpinned GitHub Actions –
.github/workflows/:pre-commit/action@v3.0.1andgoreleaser/goreleaser-action@v4use mutable tags. A moved tag runs arbitrary code with your token. Pin to commit SHAs. - Medium – No Dependabot/Renovate – 7 manifests, no update bot. Advisories go unpatched.
- Medium – Mutable Docker base image –
pkg/containers/fixtures/docker/Dockerfileusesalpine:3.22.2. Pin by digest. - Medium – No dependency vulnerability scan in CI –
.github/workflows/. Adddependency-review-actionorosv-scanner. - Medium – Large binary committed –
services/substrate/components/storage/tests/assets/test2.webm(16.2MB). Move to LFS or object storage. - Medium –
persist-credentials: falsenot set –.github/workflows/pre-commit.yml. The checkout token remains available to later steps. - Low – No job timeouts –
.github/workflows/pre-commit.yml. Wedged steps run to the platform default.
Tests are present (1,131 test files) and CI runs via GitHub Actions. A secret-shaped path exists at pkg/spore-drive/config/fixtures/config/keys/test.pem—verify whether it's a real credential.
The Bottom Line
This is a serious Go codebase with real architecture and test coverage—not a toy. The multi-project structure makes it harder to navigate but keeps concerns separated. The security posture needs work before production use, particularly around CI and dependency management. Teams wanting a self-hosted edge platform with local simulation would benefit; anyone looking for a simple deploy tool should look elsewhere.