Start here
Five steps from reading what other applications already write, to a name of your own with your domain vouching for it. Nothing to install, no account with us, and no permission to ask.
The problem
Hive gives every application the same free-form json_metadata field, and every application has filled it with names of its own. A video app writes one shape, a recipe app another, a fitness app a third. All of it is public, all of it is on chain, and almost none of it can be read by anything that did not write it.
So the same post is a video in one frontend and a bare link in the next. Not because the data is missing — it is right there in the metadata — but because the reader has no idea what the key means.
It is already happening by itself
This is not a proposal to start something. Over 1,200 blocks, seven metadata names arrive from more than one application: canonical_url from four, developer and signature from three each, and dimensions, isPoll, original_author and original_permlink from two.
Nobody arranged any of it. Somebody read somebody else’s metadata, liked the name, and used it. OpenAttribute is that, done on purpose: a register saying what a name means and who signed for it, so the next application does not have to guess.
What you get
It runs both ways, and both are worth something on their own.
Your content renders elsewhere. Write a registered name and any application that reads the register can display your post properly instead of as plain text. That is reach without an integration, a partnership, or a conversation.
Other applications’ content renders in yours. Read the names others already write and your frontend shows their videos, recipes and polls as what they are. You gain that by reading one key you already receive.
Nothing is exclusive and nothing is gated. A name is owned at registration and open at use: if a name fits what you publish, write it. Somebody else using your name is the point, not a liberty taken.
The five steps
Look at what exists
The register lists every name anybody has declared on chain: what it means, what shape it takes, who signed for it, and how often it has been written. Reusing one beats inventing another.
Write one into a post
One key in the metadata your application already sends. The post stays an ordinary Hive post; existing frontends ignore keys they do not know.
{ "app": "your-frontend/1.0", "tags": ["recipes"], "threespeak.video": { "surface": "watch", "duration": 212 } }Describing the person rather than the post? The same key goes into the account’s
posting_json_metadatainstead, with"object": "Profile"in the envelope. Read that field first and write it back whole — it is shared with the account’s display name and avatar. How.Read anybody else’s back
Three lines. The only trap is that
bridgehands metadata back parsed andcondenser_apihands it back as a string.const meta = typeof post.json_metadata === 'string' ? JSON.parse(post.json_metadata) : post.json_metadata const video = meta['threespeak.video'] if (video) renderPlayer(video)Register a name — only if nothing fits
One
custom_jsonunder the idoa-registry-dev, signed with your posting key. The registry page does it for you and reads it back off the chain. Your name is rooted in the account that signed it, so nobody can register in your namespace.{ "oa": 1, "action": "register_attribute", "attribute": { "account": "your-account", "leaf": "recipes", "version": "1.0.0", "category": "text", "description": "Preparation and cooking time, in minutes.", "schema": { "type": "object", "properties": { "cookTime": { "type": "number" } }, "required": ["cookTime"] } } }Let your domain vouch for you
Your Hive profile can name any website, so that link proves nothing on its own. One DNS record makes it mutual, and the badge on the directory turns to domain verified. Every visitor’s browser checks it live.
Name _openattributeType TXTValue hive=your-accountYour panel adds
.your-frontend.comand the quotes itself. If it asks for the whole name instead, use_openattribute.your-frontend.com.
What it costs
Nothing to install: no SDK is required for any of the above, and every example here is the whole of it. No account with us, no API key, no rate limit, and nobody to ask. Reading costs one key you already receive; writing costs one key you already send.
The register is a custom_json id on Hive, so it outlives this site. If every page here went dark tomorrow, the registrations stay exactly where they are and anybody can read them with the same three lines above.
The documentation covers versions, retiring a name, what a registration does not mean, and the packages, for when you need them.