Odel
Make Effects

Make Effects

@krasnoperovTypeScriptUpdated 1mo ago

Search, generate, and curate AI media assets with recipes and lineage in Make Effects spaces.

Server endpointStreamable HTTPOAuthProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

Make Effects

Make Effects is an AI media creation workspace at makefx.app where people and agents can generate, refine, track, compare, and continue assets across images, audio, and video.

The hosted app is the source of truth for spaces, assets, variants, prompts, recipes, immutable lineage, lightweight space organization, collaboration state, and stored media. The makefx CLI lets local agents, scripts, and developers drive that same asset loop from the command line: start generation jobs, watch progress, download outputs, inspect results, upload media, and curate variants. Agents are first-class users: the CLI and hosted MCP server expose the same asset, recipe, and lineage model used by the web app.

What You Can Build With It

  • Generate images, audio, and video through website-backed jobs.
  • Track every result as an asset variant with prompt, provider metadata, and lineage.
  • Organize Space assets visually while keeping variants tucked into asset details.
  • Refine an existing variant or derive new assets from references.
  • Upload local media into a collaborative space so generated and hand-made assets live together.
  • Let automation agents use the CLI as a stable control surface instead of touching database or storage internals.

Features

  • Authentication: Google OAuth with JWT tokens, OIDC-compliant
  • Four-Worker Architecture: Separate workers for HTTP/frontend, media generation, billing sync, and BYOK key custody
  • React 19 Frontend: Vite, TanStack Router, Zustand, CSS Modules
  • D1 Database: SQLite with migrations and Kysely query builder
  • R2 Media Storage: Durable media artifacts for generated and uploaded files
  • Dependency Injection: InversifyJS for clean architecture
  • Make Effects CLI: Command-line access through the makefx package and command
  • TypeScript: End-to-end type safety

CLI Quick Start

Install the CLI from npm:

npm install -g makefx

Authenticate with the hosted app:

makefx login

Create a space or bind an existing website space to the current directory:

makefx spaces create "My Game Assets" --init
makefx init --space YOUR_SPACE_ID

Generate media and download completed outputs:

makefx generate "A cozy pixel-art market background" \
  --name "Market Background" \
  --type scene \
  -o art/market.png

makefx audio sfx generate "A crisp magical item pickup" \
  --name "Item Pickup" \
  -o audio/item-pickup.wav

makefx video generate "A looping idle animation for a tiny robot" \
  --name "Robot Idle" \
  --type animation \
  -o video/robot-idle.mp4

makefx video derive "move from the entrance to the desk" \
  --first-frame refs/start.png \
  --last-frame refs/end.png \
  --name "Desk Move" \
  --type animation \
  -o video/desk-move.mp4

Inspect and reuse tracked results:

makefx assets
makefx assets search "hero sword" --media image
makefx assets show ASSET_ID --json
makefx assets download VARIANT_ID -o references/variant.png
makefx assets clone VARIANT_ID --from-space SOURCE_SPACE_ID --to-space TARGET_SPACE_ID
makefx collections add-asset COLLECTION_ID ASSET_ID --variant VARIANT_ID
makefx collections add-variant COLLECTION_ID VARIANT_ID
makefx recipes run VARIANT_ID
makefx usage --from 2026-06-01
makefx spend --from 2026-06-01 --provider gemini
makefx listen --space YOUR_SPACE_ID

Use run manifests for debugging agent workflows:

makefx runs --debug
makefx runs show --latest --debug --json

The CLI defaults to production at https://makefx.app. Use --env stage for staging or --local for a local development server.

CLI Commands

CommandDescription
makefx loginAuthenticate with makefx.app
makefx logoutClear stored makefx.app authentication
makefx spacesList, view, or create collaborative spaces
makefx initBind the current directory to a website space
makefx generateGenerate a new image asset
makefx refineRefine an existing image variant
makefx deriveCreate a new image asset from variant IDs or local refs
makefx batchGenerate multiple images and write a debug run manifest
makefx audioGenerate speech, dialogue, music, or sound effects
makefx videoGenerate, refine, or derive video assets
makefx uploadUpload local media files and return Space IDs for chaining
makefx assetsList, search, show, download, clone, rename, delete, and set active assets
makefx collectionsCreate collections and add existing assets or exact variants
makefx variantsRetry, star, rate, or delete variants
makefx recipesRe-run a variant's stored generation recipe
makefx usageShow platform storage and workflow consumption for a space
makefx spendShow admin provider cost summaries
makefx billingInspect and manage Polar billing synchronization
makefx listenStream real-time space events
makefx runsInspect debug-only local generation manifests

See docs/cli.md and docs/cli-generation.md for the full command guide.

MCP Quick Start

Make Effects hosts a Streamable HTTP MCP server at https://makefx.app/mcp. Connect it to Claude Code with:

claude mcp add --transport http makefx https://makefx.app/mcp

Complete the browser OAuth flow when prompted. See docs/mcp.md for connection, live discovery, durable agent behavior, permissions, and error recovery.

Local Development

# Install dependencies
pnpm install

# Set up environment
cp .env.example .env
# Edit .env with your Google OAuth credentials

# Initialize local database
pnpm run db:migrate

# Start development
pnpm run dev

Access at http://localhost:3001/

Developer Commands

CommandDescription
pnpm run devStart local development (frontend + worker)
pnpm run build:cliBuild dist/cli/makefx.mjs
pnpm run pack:cliBuild and inspect the npm CLI package
pnpm run cli:dev -- --helpRun the CLI from TypeScript sources
pnpm run db:migrateApply database migrations locally
pnpm testRun tests
pnpm run typecheckTypeScript type checking
pnpm run lintESLint
pnpm run deploy:stageDeploy to stage environment
pnpm run deploy:productionDeploy the production app, generation, and polar workers (the key broker is manual-only)

Transactional Email

Registration and Space sharing notifications use Cloudflare Email Service from the backend Worker only. Stage and production require:

  • [[send_email]] binding named EMAIL.
  • MAKEFX_EMAIL_FROM set to the verified sender allowed by the binding.
  • MAKEFX_ADMIN_NOTIFICATION_EMAILS set to comma-separated admin recipients for new-user registration notifications.
  • PUBLIC_SITE_ORIGIN set so Space links in emails point at the right host.

Email delivery is best-effort: send failures are logged and do not roll back auth or Space sharing mutations.

Project Structure

src/
├── backend/       # API routes, services, middleware
├── frontend/      # React application
├── dao/           # Data access layer
├── db/migrations/ # SQL migrations
├── cli/           # CLI tool
└── worker/        # Cloudflare Worker entry points

Documentation

Tech Stack

  • Runtime: Cloudflare Workers
  • Database: Cloudflare D1 (SQLite)
  • Frontend: React 19, Vite, Zustand
  • Backend: Hono, InversifyJS, Kysely
  • Auth: Google OAuth, JWT (jose)
  • Testing: Node.js test runner

License

MIT