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

  1. 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.

  2. 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_metadata instead, 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.

  3. Read anybody else’s back

    Three lines. The only trap is that bridge hands metadata back parsed and condenser_api hands 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)
  4. Register a name — only if nothing fits

    One custom_json under the id oa-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"]
        }
      }
    }
  5. 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_openattribute
    TypeTXT
    Valuehive=your-account

    Your panel adds .your-frontend.com and 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.