New to FunctionFly? Confused about whether to "create a function" or "publish to the registry"? You're not alone. This guide explains exactly what each action does—and when to use which.

The Short Answer

When you create a function, you're building a private backend endpoint within your own workspace. When you publish to the registry, you're sharing a function with the broader FunctionFly community.

When in doubt: Start by creating a platform function. Only publish to the registry when you're ready to share with the community.

Creating a Function (Platform API)

When you create a function, you're building a private backend endpoint within your own workspace. This is the standard flow for adding custom logic to your application.

What happens:

  • A new FunctionConfig record is created in your tenant namespace
  • The function starts in "draft" status and must be deployed to run
  • It counts against your bundle's function limit (e.g., Free tier = 3 functions)
  • Only you can see and execute it
  • No platform fee is charged

Typical workflow:

:::workflow

  1. POST /v1/functions — Create the function
  2. POST /v1/functions/deploy — Deploy it (uploads code, provisions runtime)
  3. POST /v1/functions/{id}/execute — Run it when needed [/workflow]

Use cases:

  • API endpoints for your SaaS application
  • Custom business logic (webhooks, data transforms, auth flows)
  • AI-powered features (embeddings, LLM calls, vector search)
  • Scheduled jobs and background workers

Publishing to the Registry

When you publish to the registry, you're sharing a function with the broader FunctionFly community. Think of it as publishing a package to npm or a template to a marketplace.

What happens:

  • A RegistryFunction record is created with a public profile
  • Source code/WASM is uploaded to artifact storage
  • A RegistryFunctionVersion entry is created for version tracking
  • The function becomes discoverable via search and browse
  • Users can remix it (create a personal copy)
  • Trust and verification badges may be applied (FXCERT, DRE scores)
  • Ratings and reviews are enabled
  • A platform fee applies ($2.99 for new functions, $0.99 per version update)

Platform fee applies: Publishing to the registry costs $2.99 for new functions and $0.99 per version update.

Version lifecycle:

Registry functions support full version management:

draft > published > deprecated > archived

  • Set latest and stable aliases
  • Rollback to previous versions
  • Track changelogs per version

Execution:

Published functions use the @{author}/{name} namespace pattern:

bash
POST /v1/@functionfly/image-resizer?version=2.1.0

Use cases:

  • Open-source function templates for the community
  • Commercial functions you want to sell
  • Building a personal brand as a function author
  • Creating starter templates others can remix

Key Differences at a Glance

Platform (Create)
Registry (Publish)
Visibility
Private (tenant-scoped)
Public, private, or unlisted
Namespace
Tenant ID
@{author}/{name}
Bundle Quota
Yes (counts toward limit)
No (separate registry quota)
Platform Fee
None
$2.99 (new) / $0.99 (version)
Versioning
Single version per function
Full version lifecycle
Discovery
Only by owner
Search, browse, categories
Remix
No
Yes
Trust/Verification
Not applicable
FXCERT, DRE scores
Ratings/Reviews
No
Yes

When to Use Which

Stick with creating a function if:

    Publish to the registry if:

      Under the Hood

      The two systems are completely separate and map to different database tables and API endpoints:

      Platform (Create)
      Registry (Publish)
      API Endpoint
      POST /v1/functions
      POST /v1/registry/publish
      Handler
      functions.HandleCreateFunction
      registry.HandlePublish
      Storage
      functions table
      registry_functions + registry_function_versions
      Initial Status
      "draft"
      "published"

      Ready to build? Head to your dashboard to create your first function, or visit the registry to explore what the community has built.