help.c.nf / Packages

Package Registry

p.c.nf is the CNF package registry — a GitHub-style namespace for publishing versioned packages. Every artifact has a stable URL, download counter, and access controls.

Overview

p.c.nf hosts packages under a <username>/<project> namespace. Each project has one or more versions, and each version can have one or more downloadable artifacts.

Think of it like npm’s @scope/package or GitHub’s user/repo — but for binary artifacts instead of source code.

URL structure

p.c.nf/ Catalog — browse all public packages
p.c.nf/<user> User profile — list their packages
p.c.nf/<user>/<pkg> Project page — latest version and history
p.c.nf/<user>/<pkg>/<version> Version page — artifacts and changelog
p.c.nf/<user>/<pkg>/download Download the latest artifact
p.c.nf/<user>/<pkg>/<version>/download Download a specific version (permanent)
p.c.nf/<user>/<pkg>/<version>/<label> Download a labeled artifact (for example, a platform variant)

Downloading

Download a package with curl or wget:

# Latest version curl -LO https://p.c.nf/c/cred-extension/download # Pinned version curl -LO https://p.c.nf/c/cred-extension/2.0.1/download

Downloads support HTTP Range requests for resuming and conditional GET requests that return 304 Not Modified.

Rate limit: 30 downloads per IP address per minute. A 429 Retry-After header is returned when the limit is exceeded.

Publishing

Publish a new version through the console or the HTTP API. Either method creates the project on its first publish.

Via API

curl -X POST https://p.c.nf/api/publish \ -H "Authorization: Bearer cnf_..." \ -F "slug=my-tool" \ -F "version=1.0.0" \ -F "file=@dist/my-tool.zip" \ -F "description=Short one-line summary" \ -F "category=Client tools" Published you/my-tool@1.0.0

Required fields:

  • slug — lowercase letters and hyphens only (maximum 128 characters)
  • version — a free-form string; semantic versioning is recommended
  • file — the artifact to upload

Optional fields: description, category, icon, visibility, changelog, and label for versions with multiple artifacts.

Via Console

Sign in at console.c.nf and open Downloads administration. The console handles file upload, metadata, and version updates.

Note: Publishing requires an authenticated CNF user. Each user publishes under their own /<username>/ namespace. You cannot publish under another user’s name.

Authentication

Two authentication methods are supported:

API Key (recommended for automation)

Generate a key at console.c.nf/account/api, then send it as a Bearer token:

Authorization: Bearer cnf_a1b2c3d4e5f6...

Keys are shown once when generated. You can create up to 10 active keys and revoke them at any time.

Session cookie

When browsing from console.c.nf or id.c.nf, your session cookie authenticates you automatically. This is useful for the browser extension and console.

Visibility

public Listed in the catalog; anyone can download it.
unlisted Hidden from the catalog; anyone with the URL can download it.
private Only the owner and administrators can view or download it.

Versions

Every published version is preserved at a stable URL. Older versions remain available after new releases, so consumers pinned to /1.0.0/download continue to receive that exact build.

The unversioned /download endpoint always serves the latest version.

Version strings are free-form text. Semantic versioning (MAJOR.MINOR.PATCH) is recommended for clarity but is not enforced.

FAQ

What is the difference between p.c.nf and d.c.nf?

p.c.nf is a versioned package registry with a namespace for each user (user/project). d.c.nf is a flat catalog of curated downloads managed by CNF administrators.

Can I delete a version?

Yes, through the console. Deleting a version breaks any pinned URLs consumers may have saved, so publishing a new version is usually preferable.

Is there a size limit?

Artifact limits depend on your user permission level: 50 MB per UPL step, up to approximately 500 MB. Larger files can be uploaded in chunks through the console.

How do I authenticate the extension?

The CNF Cred extension supports session cookies when you are signed in to console.c.nf, as well as API keys. Configure the method in the extension settings.