Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Blazer icon

Blazer

AI starter-pack powered by Backblaze B2, Genblaze SDK, and GMI Cloud.

Own key. Own domain. Own storage.


Website


Project details

BabySea OSS Starter BabySea OSS Status Production License


Checks

GitLabCI Sentry CodeQL Package


Built with

Next.js React Semantic Lady BabySea Genblaze Supabase Backblaze B2 Sentry


One-click deploy

Deploy to DO Deploy to Netlify Deploy on Railway Deploy to Render Deploy with Vercel


Blazer card
Blazer dashboard

BabySea OSS taxonomy

BabySea open source projects are organized into three categories:

BabySea OSS SDK BabySea OSS Primitive BabySea OSS Starter

Category Description
SDK Typed developer entry points for creating, tracking, and managing BabySea workloads from application code.
Primitive Reusable infrastructure boundaries extracted from BabySea's execution control plane. Each primitive focuses on one system concern.
Starter Deployable reference applications that combine product UI, auth, storage, and BabySea execution patterns. Some starters may also include billing.

Status

BabySea OSS projects are published into three status levels:

BabySea OSS Status Working BabySea OSS Status Production BabySea OSS Status Alpha

Status Description
Working Fully implemented and deployable. All documented capabilities function as described. Suitable for personal and small-team use. No breaking-change guarantees between versions.
Production Working plus a hardened public runtime contract. Validated against a stated infrastructure stack with deterministic behavior, explicit failure modes, and a documented upgrade path.
Alpha Early-stage implementation. Core structure exists but some capabilities may be incomplete, undocumented, or subject to breaking changes. Not recommended for production deployments.

See CHANGELOG.md to track releases and public contract changes.


Quickstart

Run locally:

git clone https://github.com/babysea-community/blazer.git
cd blazer
pnpm install --frozen-lockfile
cp .env.example .env.local

pnpm install also installs the pinned Genblaze Python packages from requirements.txt into .python. If your package manager skips postinstall scripts, run pnpm run genblaze:install once before doctor. At runtime the Genblaze bridge tries GENBLAZE_PYTHON_BIN, python3, python, and common absolute Python paths in that order.

Fill .env.local from .env.example, apply 001_blazer.sql, then start the app:

For local sign-in, add http://localhost:3011/auth/callback to Supabase Auth Redirect URLs.

pnpm run doctor
pnpm dev

Open http://localhost:3011.

Inference

Use .env.example as the source of truth for inference mode and provider credentials.

Blazer runs Genblaze with INFERENCE_PROVIDER=genblaze. The included bridge calls the Genblaze Python SDK, uses the GMI Cloud connector for generation, and writes provenance/output media through the configured Backblaze B2 sink.

Set GMI_API_KEY, GENBLAZE_PYTHON_BIN, and GENBLAZE_TIMEOUT_MS from .env.example. The bridge imports genblaze-core, genblaze-gmicloud, and genblaze-s3 from .python by default.

Storage

Use .env.example as the source of truth for storage provider, quota, worker, and monitoring configuration.

Backblaze B2 is the only storage target. Configure BACKBLAZE_B2_* values from .env.example before generating media. The app uses the native Backblaze B2 API on the backend, so private buckets work without a public bucket URL or S3 endpoint env var.

Supported models

Supported model names and provider fields are registered in lib/model-family.ts and lib/inference/genblaze/family.ts.

Model name Model ID
Seedream 5 Lite genblaze/seedream-5-lite
Flux Kontext Pro genblaze/flux-kontext-pro
Wan 2.6 Text to Video genblaze/wan2.6-t2v
Seedance 2.0 genblaze/seedance-2
Kling 2.1 Master genblaze/kling-2.1-master

Workspace

Surface Purpose
Studio Prompt, select a model, tune generation fields, upload references, and start jobs.
Gallery Review completed, failed, unavailable, and in-flight generation records.
References Store uploaded and URL-based input images that can be reused in later generations.
Usage Inspect provider, storage, queue, and quota state for the private workspace.
Profile Review owner and deployment settings visible to the signed-in workspace owner only.

Runtime

  • Blazer is owner-only. Supabase Google OAuth signs users in, and the configured owner allowlist gates dashboard access.
  • Provider credentials, storage credentials, Supabase service role keys, Sentry auth tokens, and cron secrets stay server-side.
  • Generation records, prompts, statuses, provider metadata, storage URLs, reference images, and profile state persist in Supabase Postgres.
  • Studio, Gallery, References, and Usage can process queued/running generations. /api/generations/process can also be called by cron with the worker bearer secret configured from .env.example.
  • Blazer is not a managed BabySea service, commercial support package, hosting service, billing starter, credit ledger, provider marketplace, or multi-tenant team workspace.

Deployment

DigitalOcean

.do/deploy.template.yaml defines the DigitalOcean App Platform service, build command, start command, and environment prompts. Set NEXT_PUBLIC_SITE_URL to the DigitalOcean or custom domain, configure Supabase auth callback URLs, and fill the Genblaze and Backblaze B2 environment values.

Netlify

netlify.toml builds with pnpm build and the Next.js plugin. Fill the Genblaze and Backblaze B2 environment values from .env.example.

Railway

Use the Deploy on Railway button above to start from the published Blazer template, or create a new Railway project from the public repository. Add every runtime variable from .env.example, and set NEXT_PUBLIC_SITE_URL to the Railway or custom domain.

Render

render.yaml builds with pnpm build and runs pnpm start -- -p $PORT. Fill the Genblaze and Backblaze B2 environment values from .env.example.

Vercel

Keep the checked-in vercel.json framework settings. Configure Supabase auth callback URLs with the final Vercel domain or custom domain, then redeploy after changing env values.

Scheduler

Use an external scheduler for GET /api/generations/process when you want background recovery without opening the dashboard. Send the worker bearer secret configured from .env.example and keep the frequency low enough to avoid 429 responses.

Customize

Change Files
UI app/page.tsx, app/access/page.tsx, app/dashboard/**
Auth lib/auth/owner.ts, app/access/_lib/server-actions.ts, supabase/migrations/001_blazer.sql
Models lib/model-family.ts, lib/app-config.ts, lib/inference/genblaze/family.ts, test/genblaze-models.test.ts
Inference lib/inference/index.ts, lib/inference/genblaze/server-actions.ts, scripts/genblaze-generate.py
Storage lib/storage/index.ts, lib/storage/backblaze-b2/server-actions.ts, supabase/migrations/001_blazer.sql
Worker app/dashboard/studio/_lib/generation-worker.ts, app/api/generations/process/route.ts
Monitoring instrumentation.ts, instrumentation-client.ts, lib/monitoring, scripts/sentry-project-check.mjs
Deploy .do/deploy.template.yaml, .env.example, netlify.toml, render.yaml, vercel.json, scripts/doctor.mjs

Troubleshooting

Symptom Fix
doctor fails Read the missing env var or file printed by doctor; env names live in .env.example.
Sign-in works but access is denied Check that the owner allowlist value from .env.example exactly matches your Google account email.
Supabase redirects to the wrong URL Align NEXT_PUBLIC_SITE_URL, Supabase Site URL, and Supabase Redirect URLs.
Media generation does not start Verify GMI_API_KEY, the Genblaze Python bridge, and the inference values configured from .env.example.
Media shows as unavailable Generation succeeded but the stored file cannot be resolved; check Backblaze B2 credentials, bucket name, region, and application-key permissions.
Jobs stay queued or running Open Studio, Gallery, References, or Usage to trigger processing, or configure cron for /api/generations/process.
Worker returns 401 Send the worker bearer secret configured from .env.example and rotate it if it may have leaked.
Worker returns 429 Reduce cron frequency or owner-triggered flushes; honor the Retry-After response header.
Sentry source maps are not uploaded Confirm the Sentry build variables from .env.example exist only in build/CI secrets.

Security and compliance

The project publishes its trust signals through public GitHub, GitLab, or other CI provider checks so contributors can inspect the actual CI configuration, jobs, and reports.

Community

Issues, pull requests, design discussion, and security reports should follow CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md.

License

Apache License 2.0.