Skyphusion Labs Free Open Source Software

Skyphusion Labs builds free, open source software that is not for sale: Vivijure self-hosted AI film studio (v1.0), Postern agent mailbox (v1.4), Prism multimodal AI with public BYOK, Hollow Grid, security-audit, and more. Founded by Conrad Rockenhaus; one architect and five collaborators. Blog skyphusion.net, lab skyphusion.org, code github.com/skyphusion-labs.

View the Project on GitHub skyphusion-labs/.github

Skyphusion Labs brand assets

Social preview images for GitHub repo sharing and the @skyphusion X profile banner.

Layout

Brand mark: fusion-rising icon from assets/logo-icon.svg (same as skyphusion.org).

Regenerate

cd brand
python3 generate.py

Outputs land in output/social-preview/ and output/x-banner/.

Upload to GitHub

GitHub does not expose a public API for social preview images. Use the Playwright uploader (one-time browser login, then batch upload):

npm install
npx playwright install chromium
node upload-via-ui.mjs --login    # once: log into GitHub in the opened window
node upload-via-ui.mjs            # uploads every PNG in output/social-preview/

Single repo: node upload-via-ui.mjs --repo skyphusion-labs/vivijure

The legacy upload-social-previews.sh script is kept for reference but GitHub returns 404 on that REST path.

Repo catalog

Edit repos.json to change taglines, accent colors, motif, or chip text per repo, then regenerate and re-upload.

Repository topics (OSS discoverability)

GitHub repository topics are the org’s public category tags. They drive topic search, related-repo discovery, and the “About” chips on each repo page. GitHub allows at most 20 topics per repo.

The canonical topic set for every public skyphusion-labs repo lives in topics.json, alongside repos.json. Each entry has:

Field Purpose
owner / repo GitHub slug (skyphusion-labs/vivijure)
family Constellation grouping for batch updates (vivijure, hollow-grid, postern, sites, infra, org, …)
topics Sorted topic list (1–20). Include both product family tags (vivijure, mud, postern) and stack tags (cloudflare-workers, typescript, agpl).

Apply or verify

Prereqs: gh authenticated with org admin/repo scope, jq installed.

cd brand
chmod +x update-topics.sh

./update-topics.sh --dry-run          # show planned changes only
./update-topics.sh                      # push catalog -> GitHub for all public repos
./update-topics.sh --check              # CI/drift gate: exit 1 if live != catalog
./update-topics.sh --repo vivijure      # single repo
./update-topics.sh --family vivijure    # whole constellation

The script uses PUT /repos/{owner}/{repo}/topics (full replace). Always edit topics.json first, then run --dry-run before applying.

When to update

Topic conventions (org-wide):

Repository About metadata (description + homepage)

GitHub’s About box (description + homepage URL on the repo page and org listing) is separate from topics. The canonical set lives in seo-metadata.json.

Field Purpose
description One-line pitch (shown in org repo list and search snippets)
homepage Live demo, product site, or primary docs entry point
cd brand
chmod +x apply-seo-metadata.sh

./apply-seo-metadata.sh --dry-run
./apply-seo-metadata.sh
./apply-seo-metadata.sh --check
./apply-seo-metadata.sh --repo prism

Edit seo-metadata.json when a repo goes public, ships a live URL, or the pitch changes. Pair with README/package.json homepage and keywords in the product repo itself.

See also distribution.md for npm, PyPI, and GHCR publish targets.

CI drift gate

Workflow .github/workflows/oss-discoverability-drift.yml runs on PRs that touch the catalogs, on merges to main, weekly (Mondays 14:00 UTC), and on demand. It fails if:

  1. A public non-archived org repo is missing from topics.json or seo-metadata.json (reverse coverage; see #17).
  2. Live GitHub topics or About metadata differ from the catalog rows that do exist.
cd brand
./check-catalog-coverage.sh   # every public repo has catalog rows
./update-topics.sh --check
./apply-seo-metadata.sh --check

After editing a catalog, apply live state before merge:

cd brand
./update-topics.sh          # or --repo / --family
./apply-seo-metadata.sh     # or --repo
./update-topics.sh --check
./apply-seo-metadata.sh --check

Archived repos are skipped by the About-metadata check (GitHub blocks writes).