snprt
How to publish — a beginner-friendly guide
Two paths: build from source (Forge) or upload a ready-made binary. Takes about 3 minutes either way.
Which situation fits you?
I have source code
A GitHub repo, or a ZIP of my project
Forge
  1. 1
    Give snprt your code.
    Paste a public GitHub / GitLab URL in the Git URL box, or zip your project and drop the file.

    How to zip correctly: right-click your project folder (the one that contains your build file) and compress it — not a sub-folder inside it. Having a src/ folder inside is fine; what matters is that the build file sits at the top level of the ZIP:
    myproject.zipCMakeLists.txt, src/, include/ at top
    myproject.zipCargo.toml, src/main.rs at top
    src.zip — only the src/ folder zipped alone (Forge can't find the build file)
    📦 Max ZIP size: 500 MB
  2. 2
    Fill in the form.
    Name — lowercase letters and dashes only, 2–64 chars (e.g. my-cool-tool)
    Version — three numbers separated by dots (e.g. 1.0.0)
    Platform — Forge always builds for linux-x64 automatically
  3. 3
    Hit Publish. snprt downloads your code, detects the language, compiles everything, and produces a self-contained binary. Watch the live build log on the right — it usually takes 1–3 minutes.
Supported languages: C, C++, Python, Rust, Go, Zig, Java — snprt auto-detects which one, no config needed.
If your repo uses Git submodules, run git submodule update --init --recursive before zipping so all dependencies are included.
I already have a compiled app
Drop a single file or a .zip — both work
Binary
  1. 1
    Drop your file — no need to zip if your app is a single file. Use a .zip only if your app needs extra files (DLLs, assets, etc.) alongside the binary:
    win-x64 Drop myapp.exe directly, or a .zip with the exe + any required DLLs
    linux-x64 Drop the Linux binary file directly (no extension needed), or a .zip with it inside
    osx-x64 Drop the Mac binary directly, or a .zip containing it
    📦 Max file size: 500 MB — zip must include all files the app needs; snprt won't install runtimes on users' machines
  2. 2
    Fill in the form.
    Platform — pick the one matching your file (win-x64 / linux-x64 / osx-x64)
    Name — lowercase, 2–64 chars. The binary inside the zip must be named exactly the same — if your app name is mycoolapp, the file must be mycoolapp.exe (Windows) or mycoolapp (Linux/Mac)
    Version — e.g. 1.0.0
  3. 3
    Hit Publish. Done — users can install your app immediately with snprt install mycoolapp. No approval queue.
Must be self-contained: your zip must include every file the app needs to run. Build with dotnet publish -r win-x64 --self-contained, PyInstaller --onefile, or nuitka --onefile to bundle everything automatically.
Common reasons "it didn't work after publishing"
App depends on an external runtime
The binary needs .NET, VC++ redistributable, CUDA, or Python installed — but snprt doesn't install those on users' machines. Rebuild as a self-contained bundle: --self-contained true (dotnet) or PyInstaller --onefile.
Binary name doesn't match the app name
The app is registered as mygame but the exe inside the zip is MyGame.exe. snprt looks for an exact lowercase match. Rename the file to mygame.exe before zipping.
Wrong platform selected
Uploaded a Windows .exe but selected linux-x64. The app won't run on Linux machines. Re-upload with the correct platform — bump the version to 1.0.1 first.
Source ZIP is a sub-folder (Forge)
Forge expects your repo root in the ZIP — CMakeLists.txt, Cargo.toml, main.py, etc. must be at the top level, not inside a folder. Re-zip from the repo root directory.
Pushing a fix is always instant
Bump your version (e.g. 1.0.01.0.1), upload the fixed file, hit Publish. snprt serves the new version immediately — no queue, no approval needed.

Sign in to publish

Snprt Studio lets artists, game developers, and AI researchers share their work without using a terminal.

CLI / Ghost Forge Publish
Advanced — snprt push v1.0.0 auto-compiles via your Git CI and registers for all platforms
Ghost Forge — Auto-Compile mode

You never run dotnet publish yourself. The Ghost Forge compiles the binary in a clean-room environment and registers it directly with the registry.

Step 1 — Install & log in

iwr -useb https://snprt.pages.dev/install.ps1 | iex
snprt login

Step 2 — Write your snprt.yml recipe

id: namit/pong
name: "Sovereign Pong"
version: 1.0.5
build:
  template: dotnet-aot  # Native AOT — single binary, zero runtime deps
  entry:    Pong.csproj
executable: pong         # Forge names the output binary this

Step 3 — Push

snprt push v1.0.5

Auto-Compile chain

1
Local — snprt push

CLI reads snprt.yml, injects the Ghost Forge workflow, creates a version tag, and pushes.

2
Remote — Ghost Runner starts

GitHub Actions / GitLab CI / Forgejo picks up the tag and spins a clean runner.

3
Compilation

dotnet publish -r <rid> -c Release /p:PublishAot=true — native binary, zero runtime.

4
Verification — SHA-256 sealed

Runner computes the checksum and POSTs to the snprt registry with your API key.

5
Live

Registry writes latest.json, FileSystemWatcher fires, feed card shows new version instantly.

Manual upload vs Ghost Forge

FeatureManual Upload (Studio)Ghost Forge (CLI)
EffortBuild, zip, upload yourselfOne command: snprt push
CompilingYou do it on your machineGhost Forge does it in CI
Multi-OSNeed a Mac to build for MacForge builds all RIDs at once

After publishing

snprt install yourname/yourapp