Get started
You publish packages on datumhue.app from a registry of your own: the package server you run for the namespace you claimed when you subscribed. It is this software, on a machine you control.
This page takes you from your subscription to a published package, then through selling, backing up and replacing your key. The reference holds every command, setting and message.
Run the commands on this page in a terminal; on Windows, in PowerShell.
Set up your registry
On the machine that will run your registry, in the registry's folder:
- Create your registry's key with
./datumhue-registry keygen, which writes it toidentity.key, and paste the public key it prints into the creator onboarding page when you subscribe. - On activation you receive
namespace.capabilityandprovider.kdl. Put both in this folder, besideidentity.key. - In
provider.kdl, fill inpublish-rules: who may publish to your namespace, inside the block of the issuer URLloginprints. - Start the registry, here with a folder of packages to publish:
./datumhue-launcher serve --config provider.kdl --seed-from <folder> - Publish from the Platform workstation, with its
loginandpkg push <package>commands.
Your key
Choose at the keygen prompt whether to protect the key with a
passphrase: a protected key needs DATUMHUE_KEYSTORE_PASSPHRASE set
every time the registry starts, and a plaintext key needs it unset. On
Linux and macOS, identity.key must be readable only by you (mode
0600), or the registry refuses to start. The platform admits the
public key you paste; keep the key file itself on this machine and in
your backup.
The files you receive
namespace.capability admits your registry for your namespace and
renews itself while the registry runs. provider.kdl holds the
registry's settings, filled in for you.
Who may publish
The publish-rules block names who may publish to your namespace, by
the address they sign in to Google with: the rules sit in the block of
Google's issuer URL. Until it holds a rule, nobody can publish over the
network.
publish-rules {
issuer "https://accounts.google.com" {
allow claim="email" equals="you@example.com" rights="rw"
}
}
Start through the launcher
Every start through the launcher installs the newest registry release first, which the platform requires; when the check fails, the release you have runs. When the platform moves to a new release, a running registry goes back through the launcher on its own to install it. To keep the registry running across restarts and reboots, run it as a service.
Publish a package
Publish from the Platform workstation with the datumhue command its
installer adds:
datumhue login
datumhue pkg push <package-folder>
With a zip, run the same commands with ./datumhue-launcher in the
folder you unzipped (on macOS,
DatumHue.). login opens your
browser once; later pushes reuse the sign-in.
The push goes to the registry of the package's @scope: your
namespace. A published version never changes: pushing the same version
again with other content is refused, so raise the version to publish
new content. To withdraw a version, pkg yank takes it out of the store
and keeps its history.
To send people to a package, link its listing in the store:
https://, with your package's
@scope/name. The link opens the workstation in their browser at that
listing, where they can install the package or open it.
Sell a package
Mark a package paid in its manifest, then set its price:
datumhue pkg price @studio/name 4990
The amount is in the currency's smallest unit (--currency defaults to
usd). The price belongs to the store, not the package: change it at
any time with the same command, without publishing a new version. Run
it without an amount to show the current listing. A paid package that
has no price yet cannot be bought. Buyers pay you directly; the
platform's 15% fee and Stripe's processing fees come out of each sale,
and your payout account receives the rest.
What a sale delivers depends on the package kind:
- An app is an end-user product. A paid app ships sealed; a buyer's purchase unlocks its download and launch.
- A library or asset pack is a creator good. Its sale delivers your source into the buyer's own project, to use, adapt and ship inside their packages under the license you set. Libraries and asset packs are never sealed.
Your terms of sale are your own: the platform adds no license text to paid packages and shows buyers none of its own. Attribution, limits on redistribution and anything else you ask of buyers belongs in the terms you present them, in the README your manifest names. The store shows it on the package page before the buyer pays, while checkout carries only the platform terms. A library or asset pack can carry a license file as well; a sealed app's terms live in its README.
Buyers download what they bought from your registry and renew their purchases through it, so keep it running and backed up: a purchase lapses within 30 days after your registry stops answering or its admission ends for any reason.
Back up your registry
| What | Why |
|---|---|
identity.key | Losing it means replacing your key |
The package files (blobs/) | A version published with pkg push whose package is no longer in your sources cannot be downloaded again without them |
| Your package sources | --seed-from rebuilds the package files of the versions still in them |
The catalog (catalog.redb) | Every published version and its yank history; the platform fills a lost one again while the registry runs |
The purchases (entitlements.redb) | Who owns each paid package. Without it, a restored registry gets the last 30 days' sales back within the hour and older ones when you ask the platform's operator; until then those buyers cannot download or renew |
namespace.capability needs no backup: it renews itself while the
registry runs. After a long time stopped it can lapse; the rotation page
linked from your connection email issues a fresh one.
Replace your key
identity.key is the one credential the platform trusts. When it is
lost, when you suspect someone else has it, or when a machine that held
it is retired without care, replace it:
-
Create a new key. The admitted key is still in place, so
keygenneeds--forceto overwrite it:shell./datumhue-registry keygen --force -
Sign in on the rotation page linked from your connection email and paste the new public key. The old key stops being accepted as soon as the new one is admitted.
-
A fresh
namespace.capabilityarrives by email: put it beside the new key, keep your ownprovider.kdl, which holds your publish rules, and start the registry again.
Your namespace follows your account, not the key. The platform's operator never asks for your secret key.
Your subscription
Publishing on the platform is governed by the creator terms of use you
accept at checkout (TERMS-OF-USE-CREATORS.md); the same terms license
this registry software. Cancel or manage your subscription from the
subscription page linked in your connection email. A lapsed
subscription ends your registry's admission without being a breach,
and your namespace stays bound to your account: subscribing again from
it resumes publishing, unless the sign-in identity that holds the
namespace has been erased, which retires the namespace for good. On a
breach of the terms the platform may revoke your namespace's authority
and decline to renew its capability; a breach that can be remedied is
ordinarily notified, with a reasonable chance to cure, before or
alongside revocation.