5.5 KiB
Skald Circle — SKALD
Current status
New application with agents and chatbots to help families and small groups collaborate, with supervised chat for children and vulnerable people.
Agent icons — completed ✅
All 11 agents now have Vector Paintings icons (painterly vector, warm and family-friendly), generated via ComfyUI:
| Agent | Animal | Status |
|---|---|---|
| Main Assistant | 🦊 Fox | ✅ |
| Project Coordinator | 🦡 Badger | ✅ |
| Researcher | 🐿️ Squirrel | ✅ |
| Generalist | 🦫 Beaver | ✅ |
| Code Explorer | 🕵️ Meerkat | ✅ |
| Software Architect | 🏗️ Heron | ✅ |
| Software Engineer | 🔧 Bear | ✅ |
| Spec Writer | 📝 Owl | ✅ |
| Tech Lead | 👑 Deer | ✅ |
| TIC | 👁️ Cat | ✅ |
| Business Analyst | 💼 Magpie | ✅ |
Refactoring — completed ✅
- Removed Tauri/desktop dependency (
tauri.conf.json,src/desktop/,icons/,docs/desktop.md, gen schemas/) - Removed
build.rs(no longer needed) - New i18n system (core-api + plugin-mobile-connector + web)
- Configuration system refactoring
Auto-build CI/CD ✅
Automatic build on NiPoGi with Gitea Actions (native runner v2.1.0):
| Component | File | Status |
|---|---|---|
ci/package.sh |
Creates distribution tarballs from compiled binaries | ✅ |
ci/verify-version.sh |
Verifies that a release hasn't been built yet | ✅ |
.gitea/workflows/nightly.yml |
Push to main → build amd64+arm64 → nightly/ |
✅ |
.gitea/workflows/release.yml |
PR check verify-version + merge → build → releases/v{ver}/ |
✅ |
| Native runner on NiPoGi | v2.1.0, host-mode systemd service, label linux-amd64 |
✅ |
| Cross toolchain (arm64) | gcc-aarch64-linux-gnu + rustup target add |
✅ |
Caddy builds.skaldagent.net |
file_server browse (directory listing) | ✅ |
Route53 builds.skaldagent.net |
A record → 145.40.169.107 | ✅ |
| CI cache | Persistent CARGO_TARGET_DIR at /home/dguiducci/.cache/skald-ci/target |
✅ |
install.sh |
One-liner script `curl ... | bash` — Linux (systemd) + macOS ARM64 (launchd) |
install-nightly.sh |
One-liner script for nightly builds — same OS support | ✅ |
uninstall.sh |
Bundled in tarball — stops service/agent, removes everything | ✅ |
releases/LATEST |
Auto-updated by release workflow to track latest version | ✅ |
Technical notes
scripts/in.gitignore— CI scripts moved toci/(tracked by git)- Build without
whisper-localon Linux (--no-default-features) aarch64-linux-gnu-stripfor ARM64 binariesactions/checkout@v4works (native runner has Node.js)- macOS ARM64 supported via
install.sh/install-nightly.sh(auto-detects OS, uses launchd)
Next steps
- Create
releasebranch on Gitea with branch protection (PR via UI) - Test release workflow with a PR
- Build first macOS ARM64 binary on MacBook, upload to
builds.skaldagent.net
macOS support
Supported: macOS ARM64 (Apple Silicon M1+), Intel not supported.
| Aspect | Status | Notes |
|---|---|---|
Install script (install.sh) |
✅ | Auto-detects macOS, uses launchd |
Nightly install (install-nightly.sh) |
✅ | Same logic |
Uninstall script (uninstall.sh) |
✅ | Handles launchctl |
Package script (ci/package.sh) |
✅ | Accepts --os darwin, strips best-effort |
| Binary | ⏳ Not yet built | Build natively on MacBook, deploy to builds.skaldagent.net |
How to build for macOS (on MacBook)
cargo build --release -p skald-setup -p skald # includes whisper
./ci/package.sh --version v0.1.0 --os darwin --arch arm64 \
--target-dir target/release --output dist/
Upload the resulting dist/skald-circle-v0.1.0-darwin-arm64.tar.gz to the NiPoGi's builds.skaldagent.net/releases/v0.1.0/ directory.
Cross-compilation from NiPoGi (research notes 🧪)
Cross-compiling for aarch64-apple-darwin from the NiPoGi using zig + cargo-zigbuild was attempted but hit blockers.
| Component | Location | Notes |
|---|---|---|
| Zig | ~/.local/bin/zig (symlink to /tmp/zig-linux-x86_64-0.14.0/zig) |
v0.14.0, installed manually |
| macOS SDK | /opt/MacOSX/MacOSX11.3.sdk |
From phracker/MacOSX-SDKs (GitHub) |
| Rust targets | aarch64-apple-darwin |
via rustup target add |
cargo-zigbuild |
~/.cargo/bin/cargo-zigbuild |
v0.23.0 |
| zig wrapper scripts | /tmp/zig-wrap-cxx.sh, /tmp/zig-ar-wrap.sh |
Handle OpenSSL/Clang flags + SDK paths |
What works:
- ✅ Rust std compilation for macOS target
- ✅ OpenSSL compilation from source (via wrapper that remaps
--target=and provides SDK headers) - ✅ Rust dependency compilation (tree-sitter, sqlx, tokio, etc.)
- ✅ Single-file C programs compile and link correctly
What's blocked:
- ❌
zig ccsegfaults with-F(framework search path) on Linux → can't link against macOS frameworks (CoreFoundation, Security) - ❌
zig cccan't find frameworks without-F - ❌
libsqlite3-sysbuild.rs bug:is_applecheckshost.contains("apple") && target.contains("apple")→ forces OpenSSL linkage instead of CommonCrypto on cross-compile (needs upstream fix orOPENSSL_DIRworkaround)
The fix would be:
- Upstream fix to
libsqlite3-sysbuild.rs (target.contains("apple")only) - Zig fix for
-Fsegfault, or useld64instead of zig's linker
Conclusion: Cross-compilation is fragile. Build natively on MacBook for now.