Bulk Open Cloud uploads
Queue images, audio, models, and meshes with concurrency control, retries, and per-item status — the daily pipeline Creator Dashboard wasn't built for.
Teams & self-hosting
Bulk Open Cloud uploads, local libraries, model package updates, and InsertService scripts — deployed on your infrastructure. No multi-tenant SaaS. No vendor holding your API keys.
MIT · Docker-ready · Optional audit logs · Roblox Open Cloud only
Why studios choose Studio Vault
Same local-first workflow solo developers love — packaged for security review and team operations.
Queue images, audio, models, and meshes with concurrency control, retries, and per-item status — the daily pipeline Creator Dashboard wasn't built for.
Replace FBX content on an existing rbxassetid without breaking references. Ship iterative art passes without re-wiring every script.
Generate Luau loaders from your library for instant Studio workspace loading during development and QA.
Separate credential profiles per user or group. Switch from the header before each batch — keys encrypted in IndexedDB, never on the server.
No analytics, no third-party CDNs, no cloud-synced libraries. MIT licensed. Auditable source you can fork and deploy.
Security architecture
Browser → your Next.js proxy → Roblox Open Cloud. Nothing else. Read the threat model.
IndexedDB library, encrypted credential vault, upload queue UI
During upload only
API keys travel per-request from the browser to your proxy, then to Roblox. They are not written to server disk, logged, or stored in a database. Optional audit logs record asset metadata — never secrets.
Deployment options
Docker is the primary path. Full env var reference and reverse-proxy examples in docs/DEPLOYMENT.md.
Multi-stage production image, non-root user, port 3000.
docker build -t studio-vault .
docker run -p 3000:3000 \
-e NEXT_PUBLIC_SITE_URL=https://vault.yourstudio.com \
studio-vaultStandard Node deployment behind your existing reverse proxy.
npm ci
npm run build
npm startTerminate TLS at nginx, Caddy, or Cloudflare Access. Inject SSO actor headers for audit logs.
# nginx — forward actor from SSO
proxy_set_header X-Studio-Vault-Actor $remote_user;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;Team workflows
Git-backed library sync, profile conventions, and optional audit trails. Team workflow guide.
Export library.json or CSV from any teammate's workspace. Commit the canonical manifest to your game repo. Others import or merge on pull.
Device-bound AES-GCM encryption by default. Optional passphrase vault with auto-lock for shared machines — metadata stays visible when locked.
Label profiles by experience or publishing group. Document which Open Cloud key maps to which creator ID in your internal runbook — keys never go in Git.
Enable RBLXUPLOADS_AUDIT_LOG=1 on your instance. Structured JSON lines per upload — actor, asset ID, status — never API keys or file contents.
Headless studio-vault upload for pipelines. Machine-readable JSON lines, env-based credentials, GitHub Actions examples in docs/CI.md.
Git sync flow
library.manifest.jsonNo server database. No vendor sync. Your game repo is the source of truth for asset metadata.
Comparison
Honest positioning for procurement and engineering leads.
| Capability | Studio Vault | Creator Dashboard | Build in-house |
|---|---|---|---|
| Bulk upload queue with retries | Yes | ◐Partial | Yes |
| Local searchable asset library | Yes | No | ◐Partial |
| Model package in-place PATCH | Yes | ◐Partial | Yes |
| InsertService script generator | Yes | No | ◐Partial |
| Self-hosted / air-gapped deploy | Yes | No | Yes |
| Encrypted credential vault (device + passphrase) | Yes | No | ◐Partial |
| Zero telemetry by default | Yes | No | ◐Partial |
| Time to ship | Minutes | Immediate | Weeks–months |
| Maintenance burden | Low (OSS updates) | None | High |
◐ = limited or manual workflow. Creator Dashboard excels at one-off publishing; Studio Vault targets daily pipeline work at studio scale.
FAQ for security reviewers
Keys, data residency, logging, SSO proxy patterns — answered for your security review packet.
Profile metadata (labels, creator IDs) lives in browser localStorage. API keys and webhook secrets are encrypted in IndexedDB with AES-GCM — device-bound by default, or passphrase-protected for shared machines. During upload, keys travel per-request from browser → your self-hosted proxy → Roblox. For CI, keys live in the pipeline secret store or runner env, not in the Studio Vault instance.
Only upload requests to Roblox Open Cloud (file bytes + asset metadata required by the API). Library data, credential profiles at rest, and telemetry never leave your controlled environment unless you explicitly export them.
Asset libraries live in each user's browser IndexedDB. Self-hosted Studio Vault stores no user database. Optional audit logs write to stdout or a file path you configure on your infrastructure.
Timestamp, event type (create/patch), optional actor header, creator ID/type, asset ID, display name, file name, asset type, status, duration, and request ID. API keys, file contents, and raw Roblox error payloads with secrets are never logged.
Studio Vault has no in-app user accounts. Place it behind your identity proxy (Cloudflare Access, oauth2-proxy, nginx auth) and forward X-Studio-Vault-Actor or X-Forwarded-Email when RBLXUPLOADS_TRUST_PROXY=1 for audit attribution. See docs/DEPLOYMENT.md.
No. Each studio deploys their own instance. There are no shared accounts, billing tiers, or cloud-synced libraries. Team workflows use Git-exported manifests and documented conventions — not a vendor database.
Export JSON/CSV from the workspace, commit library.manifest.json to your game repo, and import or merge on other machines. Credential metadata (labels, creator IDs) can export separately — API keys require explicit opt-in with confirmation.
Studio Vault is MIT open source you self-host. It is not a SOC 2 certified SaaS. Security reviewers can audit the source, threat model (docs/SECURITY.md), and network diagram on this page. Your compliance posture depends on how you deploy and operate it.
Deploy with Docker, wire your reverse proxy, and point your team at a URL you control. Need help rolling it out across a studio? studio-vault@starvsk.dev