Skip to content
cccskills
FreePublished on GitHub

actonos-build

Skill for building ActonOS: Web UI → Go binary → Docker image → ISO. Covers the entire build pipeline.

The English summary is being prepared. Showing the original description.

Works withDocker
See how to install

Files included (1)

  • SKILL.md4.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

ActonOS Build Skill

Use this skill when building ActonOS artifacts: the frontend, Go binary, Docker image, or bare-metal ISO.

Build Pipeline Overview

make deps → make lint → make test → make test-race (Linux CI) → make build-web → make build → make docker → make iso
TargetWhat It DoesOutput
make depsInstall Go + Node dependencies—
make lintRun Go vet, gofmt, golangci-lint, ESLint—
make testRun all tests (unit + integration)build/coverage.out
make test-raceRun the Linux CGO race detectorRequired CI gate
make build-webBuild React frontend (Vite production)web/dist/
make buildBuild full actond binary (includes web)build/actond
make build-onlyBuild Go binary only (skip web rebuild)build/actond
make dockerBuild Docker imageactonos/actonos:VERSION
make isoBuild bare-metal installation ISObuild/ActonOS-vVERSION.iso
make allFull pipeline: lint → test → buildbuild/actond

Build Variables

The Go binary embeds version metadata via linker flags (-ldflags):

LDFLAGS := -s -w \
    -X main.Version=$(VERSION) \
    -X main.GitCommit=$(GIT_COMMIT)$(GIT_DIRTY) \
    -X main.BuildTime=$(BUILD_TIME)

These are read from:

  • VERSION file → main.Version
  • git rev-parse --short HEAD → main.GitCommit
  • date -u → main.BuildTime

Step-by-Step: Full Production Build

1. Build the Frontend

make build-web
# Runs: cd web && npm run build
# Output: web/dist/ (compressed static assets)

The frontend is built with Vite and produces gzip/brotli compressed assets that are embedded into the Go binary via go:embed.

2. Build the Go Binary

make build
# Runs: CGO_ENABLED=0 go build -trimpath -ldflags '...' -o build/actond ./cmd/actond/

Critical: Always build with CGO_ENABLED=0 for a fully static binary.

3. Cross-Compilation

# Linux AMD64 (default target for MiniPC/Docker)
GOOS=linux GOARCH=amd64 make build

# Linux ARM64 (for ARM-based devices)
GOOS=linux GOARCH=arm64 make build

4. Build Docker Image

make docker
# Output: actonos/actonos:VERSION and actonos/actonos:latest

The Dockerfile uses multi-stage build:

  1. Stage 1: Build Go binary
  2. Stage 2: Build frontend
  3. Stage 3: Alpine minimal runtime image (<35 MB)

5. Build ISO (Bare-metal)

# Requires: Debian/Ubuntu host with live-build and debootstrap
make iso
# Runs: bash scripts/build-iso.sh
# Output: build/ActonOS-vVERSION.iso

go:embed Integration

The built frontend assets are embedded into the Go binary:

// internal/server/static.go
//go:embed all:../../../web/dist
var embeddedAssets embed.FS

The layered_fs.go module implements a layered filesystem that checks /data/overrides/ before falling back to embedded assets, allowing runtime UI customization.

Verifying a Build

# Check binary version
./build/actond --version

# Check binary size
ls -lh build/actond

# Check it's truly static (no dynamic linking)
file build/actond
# Expected: "ELF 64-bit LSB executable, x86-64, statically linked"

# Quick smoke test
./build/actond --data-dir=./dev-data --log-level=debug &
curl http://localhost:8080/api/health
kill %1

Common Build Issues

IssueCauseSolution
web/dist not foundFrontend not builtRun make build-web first
CGO requiredUsing mattn/go-sqlite3Use modernc.org/sqlite instead
go:embed pattern matches no filesEmpty web/dist/Build frontend first
Binary not staticCGO_ENABLED=1Set CGO_ENABLED=0
Docker build OOMLow memory during Go buildIncrease Docker memory limit

Reference Files

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Skill for developing AI agent engine components in internal/agent/. Covers the ReAct loop, swarm delegation, planning, verification, memory reflection, and cron automation.

The English summary is being prepared. Showing the original description.

actonos/actonos80Updated Aug 31, 2026

Skill for developing REST API endpoints in internal/server/. Covers routing, request validation, WebSocket streaming, and API conventions.

The English summary is being prepared. Showing the original description.

actonos/actonos80Updated Aug 31, 2026

Skill for developing messaging channel adapters via WASM Plugins and managing routing, session state, pairing codes, and accounts in internal/channels/.

The English summary is being prepared. Showing the original description.

actonos/actonos80Updated Aug 31, 2026

Skill for developing the ActonOS React 19 + Tailwind v4 frontend adhering to the official DESIGN.md specification. Covers design tokens, component decomposition, zero-hardcoded-text i18n, and go:embed delivery.

The English summary is being prepared. Showing the original description.

actonos/actonos80Updated Aug 31, 2026

Skill for creating ActonOS releases. Covers version bumping, changelog management, git tagging, Docker image publishing, and ISO creation.

The English summary is being prepared. Showing the original description.

actonos/actonos80Updated Aug 31, 2026

Skill for initial ActonOS project setup, environment verification, and dependency installation.

The English summary is being prepared. Showing the original description.

actonos/actonos80Updated Aug 31, 2026

See all skills by actonos

Report a problem with this skill