Marketplace publishing and policy
:::caution 0.2.0 Private Preview snapshot
This independent snapshot records what was true for 0.2.0. The legacy marketplace pages were illustrative in that release: no public marketplace, supported third-party SDK distribution, live publish path, revenue program, review SLA, analytics/ranking contract, or marketplace legal agreement was available.
:::
Current command reality
nexoctl publish validates only basic manifest.json fields (name, version, author, description, and a pricing.model), creates a gzip tar archive, and can perform an HTTP PUT to a hard-coded marketplace hostname. That hostname and upload are not a supported live service. Use --dry-run only from a clean staging directory, inspect the archive, and do not put an API key on the command line.
Legacy manifest schema
The retired publishing page described name, semver version, description, structured author, SPDX license, repository, homepage, up to ten keywords, categories, compatibility range/tier, pricing, phases, inline configuration schema, resource limits, icon, up to five screenshots, and changelog. It claimed lowercase/hyphen naming, 200-character descriptions, category enums, PNG dimensions, dashboard-generated forms, and marketplace indexing. These are illustrative rules, not current validation or acceptance criteria.
The developer page additionally used a YAML manifest and the local CLI generates a much smaller JSON manifest with type, language, entrypoint, sdk_version, tags, and pricing. First-party release steps use step.yaml fields such as runtimeType, image repository, risk/trust/data-access, contract range, schema reference, and build target. No public conversion exists among these schemas.
Legacy pricing, revenue, and payouts — unavailable
Retired pages conflict: one lists free/one-time/subscription, another adds usage-based; one says Stripe Connect, $25 minimum, and payment within five business days, while another says Lemon Squeezy, $50 minimum, and payment on the 15th. They also claim 70/30, an 80% enterprise share, minimum prices, trials, refunds, merchant-of-record handling, signed licenses, grace periods, usage reporting, caps, and fee guarantees. Nexo offers none of these as current terms. Pricing and payout policy would require an announced commercial program and binding agreements.
Legacy publishing and review — unavailable
The five-step story was develop/test, validate, publish a signed bundle, 24–48 hour security/quality/policy review, then listing/install. Another page says 1–3 business days and describes automated, functional, under-5-ms p99 performance, content, and publication stages. Fast track supposedly took 12 hours after three good-standing plugins. No live queue, SLA, signed-bundle service, reviewer appeal, status URL, developer verification, or install command is supported.
Illustrative pass criteria were documentation, tests, no malicious behavior, proportionate resources, clear schema, and graceful errors. Illustrative rejection criteria were excessive resources, forbidden access, missing docs, traps/panics, misleading metadata, undisclosed collection, copyright, and policy violations. These remain useful review themes, not an active policy.
Legacy versioning, deprecation, and delisting — policy-dependent
The page required semver; classified patch/minor/major changes; allowed prereleases; proposed exact, minor, major, and latest pins; required migration guides; promised six months' deprecation notice plus three months' existing-use continuation; and exposed deprecate/unpublish commands. None is marketplace policy. For 0.2.0, the installed release bundle was the compatibility unit; there was no public marketplace version-resolution policy or later contract-negotiation guarantee.
The developer guide also claimed automatic delisting for repeated CPU-budget violations. The publishing page gave Nexo removal rights for policy violations, vulnerabilities, or sustained negative feedback. Both are legacy hypotheticals.
Legacy analytics and ranking — unavailable
The retired dashboard claimed downloads, unique/active installs, tier/region, gross/net revenue, subscribers/churn/trial conversion, ratings/reviews, WASM traps and stacks, version adoption, real-time updates, and search ranking influenced by ratings, maintenance, screenshots, and updates. The sample numbers are fabricated UI examples, not telemetry. No developer analytics endpoint, ranking algorithm, or data-retention/privacy contract is offered.
Legacy legal claims — not legal terms
The page said developers retain IP; grant Nexo a non-exclusive distribution/cache/CDN/mirroring license; must support users; may be removed for policy/security/feedback reasons; receive a guaranteed split with 12 months' notice for change; may access only declared-phase data; and are liable for damage. It linked a dashboard legal page and advised legal review. These statements are preserved solely for historical parity and do not form an agreement, license, warranty, allocation of liability, or Nexo commitment. Only separately executed/current published legal terms could do that.
Legacy success advice
The page recommended comprehensive docs, screenshots and copyable examples, prompt feedback responses, low resource use, free-first reputation building, quarterly updates, and broad tests. Claims such as “3x more installs,” ranking boosts, top-earning patterns, and 48-hour response correlations are unsupported.
Complete legacy publishing snippet archive
Every retired code/output block is preserved below. URLs, money, identities, dates, commands, statuses, and metrics are illustrative.
1. Complete legacy manifest
{
"name": "datadog-logger",
"version": "1.2.0",
"description": "Stream MongoDB query logs to Datadog with structured metadata",
"author": {
"name": "Jane Developer",
"email": "jane@example.com",
"url": "https://github.com/janeDev"
},
"license": "MIT",
"repository": "https://github.com/janeDev/nexo-datadog-logger",
"homepage": "https://janeDev.github.io/nexo-datadog-logger",
"keywords": ["logging", "datadog", "observability", "apm"],
"categories": ["observability", "logging"],
"compatibility": {
"min_nexo_version": "1.2.0",
"max_nexo_version": "2.x",
"min_tier": "pro"
},
"pricing": {
"model": "subscription",
"monthly_price_usd": 9.99,
"trial_days": 14
},
"phases": ["request", "response"],
"config_schema": { ... },
"resources": {
"max_memory_mb": 64,
"max_cpu_ms_per_request": 10
},
"icon": "icon.png",
"screenshots": ["screenshot1.png", "screenshot2.png"],
"changelog": "CHANGELOG.md"
}
2. Free pricing
"pricing": {
"model": "free"
}
3. One-time pricing
"pricing": {
"model": "one_time",
"price_usd": 19.99
}
4. Subscription pricing
"pricing": {
"model": "subscription",
"monthly_price_usd": 9.99,
"trial_days": 14
}
5. Revenue calculation
# Example revenue calculation
# Plugin: $9.99/month subscription, 100 active subscribers
Gross Revenue: $9.99 × 100 = $999.00/month
Your Share (70%): $999.00 × 0.70 = $699.30/month
Nexo Share (30%): $999.00 × 0.30 = $299.70/month
# Annual projection
Your Annual: $699.30 × 12 = $8,391.60/year
6. Develop and test flow
# Scaffold a new plugin project
$ nexo-cli plugin init my-awesome-plugin
✔ Created project structure in ./my-awesome-plugin
✔ Generated manifest.json template
✔ Created src/lib.rs with handler stubs
✔ Added .nexo/test-config.yaml
# Build the WASM binary
$ cd my-awesome-plugin
$ nexo-cli plugin build
Compiling my-awesome-plugin v0.1.0
Optimizing WASM binary... done
Output: target/wasm32-wasi/release/my_awesome_plugin.wasm (148 KB)
# Run local tests against a test MongoDB instance
$ nexo-cli plugin test --mongodb-uri "mongodb://localhost:27017"
Running 12 tests...
✔ request_phase_intercept ................... 3ms
✔ response_phase_transform .................. 5ms
✔ config_validation_accepts_valid ........... 1ms
✔ config_validation_rejects_invalid ......... 1ms
✔ handles_empty_result_set .................. 2ms
✔ handles_large_documents ................... 8ms
✔ respects_memory_limits .................... 4ms
✔ respects_cpu_limits ....................... 3ms
✔ graceful_error_handling ................... 2ms
✔ concurrent_request_handling ............... 6ms
✔ connection_phase_hook ..................... 2ms
✔ disconnect_phase_cleanup .................. 1ms
All 12 tests passed ✔
7. Validation output
$ nexo-cli plugin validate
Validating plugin package...
Manifest checks:
✔ name is valid (lowercase, alphanumeric, hyphens)
✔ version follows semver (0.1.0)
✔ description present and under 200 chars
✔ author fields populated
✔ license is valid SPDX identifier (MIT)
✔ categories are recognized marketplace categories
✔ compatibility range is valid
✔ pricing model is valid (free)
✔ phases are valid pipeline phases
WASM binary checks:
✔ Binary exists at target/wasm32-wasi/release/my_awesome_plugin.wasm
✔ Binary size within limits (148 KB < 10 MB max)
✔ Exports required handler functions
✔ No disallowed WASI imports (filesystem, network)
✔ Memory usage within declared limits
Config schema checks:
✔ Valid JSON Schema draft-07
✔ All required fields have defaults
✔ No unresolvable \$ref references
Assets:
✔ Icon exists and is ≥ 256×256 PNG
✔ Screenshots exist (2 files)
✔ Changelog file exists
Validation passed ✔ Ready to publish.
8. Publish output
$ nexo-cli plugin publish
Packaging plugin...
✔ Bundled WASM binary (148 KB)
✔ Bundled manifest.json
✔ Bundled icon.png (42 KB)
✔ Bundled 2 screenshots (186 KB total)
✔ Bundled CHANGELOG.md
✔ Bundled README.md
✔ Package signed with developer key
Uploading to Nexo Marketplace...
✔ Upload complete (376 KB)
✔ Package integrity verified
Submission ID: sub_a1b2c3d4e5f6
Status: pending_review
Your plugin has been submitted for review.
Expected review time: 24-48 hours.
You'll receive an email at jane@example.com when the review is complete.
Track status: https://marketplace.nexo.io/submissions/sub_a1b2c3d4e5f6
9. Review status
# Check review status
$ nexo-cli plugin status my-awesome-plugin@0.1.0
Plugin: my-awesome-plugin
Version: 0.1.0
Submitted: 2024-03-15T10:30:00Z
Status: in_review
Reviewer: Assigned
ETA: ~12 hours remaining
# When approved, you'll see:
$ nexo-cli plugin status my-awesome-plugin@0.1.0
Plugin: my-awesome-plugin
Version: 0.1.0
Submitted: 2024-03-15T10:30:00Z
Status: approved ✔
Published: 2024-03-16T08:15:00Z
Listing: https://marketplace.nexo.io/plugins/my-awesome-plugin
10. Install output
# Users can now install your plugin
$ nexo-cli plugin install my-awesome-plugin
Resolving my-awesome-plugin@latest... v0.1.0
Downloading... done (148 KB)
Verifying signature... ✔
Installing to pipeline... done
Plugin my-awesome-plugin@0.1.0 installed successfully.
Configure it in your nexo.yaml or via the dashboard.
11. Version pinning
# In nexo.yaml — version pinning examples
plugins:
# Pin to major version (recommended) — auto-updates 1.x.x
- name: datadog-logger
version: "1.x"
# Pin to exact version — no auto-updates
- name: datadog-logger
version: "1.2.0"
# Pin to minor version — auto-updates 1.2.x
- name: datadog-logger
version: "1.2.x"
# Always latest (not recommended for production)
- name: datadog-logger
version: "latest"
12. Deprecation command
# Deprecate a major version
$ nexo-cli plugin deprecate my-awesome-plugin --major 1 \\
--reason "Version 2.0 introduces a new config format" \\
--migration-guide ./MIGRATION-v2.md \\
--sunset-date 2025-01-15
Deprecation notice published for my-awesome-plugin v1.x
Reason: Version 2.0 introduces a new config format
Sunset date: 2025-01-15
Migration: MIGRATION-v2.md uploaded
All v1.x users will be notified via email and dashboard.
13. Developer status
# Check your developer verification status
$ nexo-cli developer status
Developer: jane@example.com
Verified: ✔ (since 2024-01-10)
Published: 5 plugins
Average Rating: 4.7 / 5.0
Review Track: fast (12h)
Stripe Connect: linked ✔
14. Downloads and installs
$ nexo-cli plugin analytics my-awesome-plugin --period 30d
Downloads & Installs (last 30 days):
Total downloads: 1,247
Unique installs: 892
Daily average: 42
Week-over-week growth: +18%
Day Downloads Installs
──────── ───────── ────────
Mar 15 38 28
Mar 16 42 31
Mar 17 55 40
...
Apr 13 61 45
Apr 14 58 43
15. Active installations
Active Installations:
Currently running: 634
By tier:
Free: 89 (14%)
Pro: 412 (65%)
Enterprise: 133 (21%)
By region:
US East: 198 (31%)
EU West: 187 (30%)
US West: 142 (22%)
AP Southeast: 107 (17%)
16. Revenue analytics
Revenue (last 30 days):
Gross revenue: $4,995.00
Your share (70%): $3,496.50
Nexo share (30%): $1,498.50
By region:
US: $2,247.75 (45%)
EU: $1,498.50 (30%)
APAC: $749.25 (15%)
Other: $499.50 (10%)
Subscribers:
Active: 500
New this month: 72
Churned this month: 18
Net growth: +54
Trial conversions: 68% (34 of 50 trials converted)
17. Ratings and reviews
Ratings & Reviews:
Average rating: 4.7 / 5.0 (142 ratings)
5 stars: ████████████████████ 89 (63%)
4 stars: ████████████ 35 (25%)
3 stars: ███ 12 ( 8%)
2 stars: █ 4 ( 3%)
1 star: ░ 2 ( 1%)
Recent reviews:
─────────────
★★★★★ "Exactly what I needed for our Datadog setup"
— user_abc123, 2 days ago
★★★★☆ "Great plugin, would love to see custom tags"
— mongodb_fan, 5 days ago
18. Error reports
Error Reports (last 7 days):
Total traps: 3
Affected instances: 2
Error rate: 0.004%
Errors:
──────
1. WASM trap: unreachable (2 occurrences)
Phase: response
Trigger: BSONDocument with nested depth > 50
Stack: lib.rs:142 → transform_response → parse_nested
2. WASM trap: memory out of bounds (1 occurrence)
Phase: request
Trigger: Document size > 15MB
Stack: lib.rs:89 → handle_request → buffer_alloc
19. Version adoption
Version Adoption:
v1.2.0 (latest): ██████████████████████████████ 72% (456 installs)
v1.1.0: ████████████ 18% (114 installs)
v1.0.0: ████ 7% (44 installs)
v0.9.0 (deprecated): ██ 3% (20 installs)
Migration velocity (v1.1 → v1.2):
Day 1: 12% adopted
Day 7: 45% adopted
Day 14: 62% adopted
Day 30: 72% adopted (current)
20. Legacy CLI quick reference
# Plugin development
nexo-cli plugin init <name> # Scaffold a new plugin project
nexo-cli plugin build # Compile WASM binary
nexo-cli plugin test # Run plugin tests
nexo-cli plugin dev # Start local dev server with hot reload
# Publishing
nexo-cli plugin validate # Check manifest and binary
nexo-cli plugin publish # Upload to marketplace
nexo-cli plugin status <name>@<ver> # Check review status
nexo-cli plugin deprecate <name> # Deprecate a major version
nexo-cli plugin unpublish <name>@<ver> # Remove a specific version
# Analytics
nexo-cli plugin analytics <name> # View install/revenue analytics
nexo-cli developer status # View developer account status
nexo-cli developer payouts # View payout history
# Account
nexo-cli auth login # Authenticate with Nexo
nexo-cli developer register # Register as a marketplace developer
nexo-cli developer stripe-connect # Link Stripe account for payouts