Creating a Function vs Publishing to the Registry
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.
:::callout[tip] 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
FunctionConfigrecord 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
POST /v1/functions— Create the functionPOST /v1/functions/deploy— Deploy it (uploads code, provisions runtime)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
RegistryFunctionrecord is created with a public profile - Source code/WASM is uploaded to artifact storage
- A
RegistryFunctionVersionentry 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)
:::callout[warning] 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: :::lifecycle draft > published > deprecated > archived :::
- Set
latestandstablealiases - Rollback to previous versions
- Track changelogs per version
Execution:
Published functions use the @{author}/{name} namespace pattern:
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
:::api-table
| label | Platform | Registry |
| 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 |
[/api-table]
When to Use Which
:::decision [platform] Stick with creating a function if:
- You're building internal backend logic
- The function is tightly coupled to your application
- You don't want others to see or use it
- You're prototyping or testing [/platform] [registry] Publish to the registry if:
- You want to share a reusable function with others
- You're building a product that includes a marketplace component
- You want to charge for your function code
- You want the community to be able to remix and improve it [/registry] [/decision]
Under the Hood
The two systems are completely separate and map to different database tables and API endpoints:
:::api-table
| label | 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" |
[/api-table]
Ready to build? Head to your dashboard to create your first function, or visit the registry to explore what the community has built.