DatumHuedatumhue.com
Contents

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:

  1. Create your registry's key with ./datumhue-registry keygen, which writes it to identity.key, and paste the public key it prints into the creator onboarding page when you subscribe.
  2. On activation you receive namespace.capability and provider.kdl. Put both in this folder, beside identity.key.
  3. In provider.kdl, fill in publish-rules: who may publish to your namespace, inside the block of the issuer URL login prints.
  4. Start the registry, here with a folder of packages to publish: ./datumhue-launcher serve --config provider.kdl --seed-from <folder>
  5. Publish from the Platform workstation, with its login and pkg 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.

kdl
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:

shell
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.app/Contents/MacOS/datumhue-launcher). 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://datumhue.app/?arg=open&arg=@scope/name, 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:

shell
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

WhatWhy
identity.keyLosing 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:

  1. Create a new key. The admitted key is still in place, so keygen needs --force to overwrite it:

    shell
    ./datumhue-registry keygen --force
    
  2. 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.

  3. A fresh namespace.capability arrives by email: put it beside the new key, keep your own provider.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.

datumhue.com

Victor Mono is licensed under the SIL Open Font License 1.1
Copyright (c) 2024, Rune Bjørnerås (https://github.com/rubjo)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
    ↑↓ selectEnter openTab filter

    Settings

    Theme
    Text
    Print

    Keyboard shortcuts

    / or Ctrl KSearch
    ↑ ↓ EnterPick a result
    TabNext result filter
    j kNext or previous entry
    [ ]Previous or next page
    yCopy a link to the current entry
    ?These shortcuts
    EscClose

    On this page