Skip to content
Open Source · MIT License

Secure key management for Hive blockchain

Standalone wallet daemon with HTTP & WebSocket API. Sign transactions without running a full node. Available as native C++ daemon and npm package.

View Source Code
beekeeper
$ beekeeper --webserver-http-endpoint=127.0.0.1:5001
Starting Beekeeper v1.27...
Listening on 127.0.0.1:5001
Ready to manage your keys securely

Powering the Hive ecosystem

Hive Wax HiveSigner PeakD Splinterlands Hive.blog Ecency
Features

Everything you need for secure key management

Battle-tested wallet daemon trusted by the Hive ecosystem

Native & WASM

Run as a C++ HTTP daemon or use the npm package directly in browser and Node.js

Secure Key Isolation

Private keys never leave the process. Sign transactions without exposing secrets

Multi-Session Support

Token-based sessions with concurrent access. Multiple users, one daemon

Auto-Lock Timeout

Wallets automatically lock after configurable inactivity period. Default 900s

22 API Endpoints

Complete JSON-RPC API over HTTP and WebSocket. Create, sign, encrypt — all via API

Built-in Encryption

Diffie-Hellman memo-style encrypt/decrypt. Secure messaging without extra libraries

Architecture

One core, two targets

Shared C++ library powers both the native daemon and browser-ready WASM package

Shared Core

C++ Library

Wallet Management · Encryption · Key Storage

Native Daemon

C++ / Boost

HTTP & WebSocket server

WASM Package

Emscripten / TypeScript

@hiveio/beekeeper

JSON-RPC API

22 endpoints

Browser & Node.js

< 274 KB bundle

API

Simple, powerful API

Get started with just a few lines of code

import { createBeekeeper } from "@hiveio/beekeeper";

const beekeeper = await createBeekeeper();
const session = beekeeper.createSession("my.salt");

const wallet = await session.createWallet("my_wallet", "password123");

// Import a private key
await wallet.importKey("5JkFnXrLM2ap9t3AmAxBJvQHF7xSKtnTrCTginQCkhzU5Ls5Kgz");

// Sign a transaction digest
const signature = wallet.signDigest(
  "9a37a3a1e800f498035464c3e21e377a7a18dead30a8e01a68ca54860a1ed4ca"
);

console.log(signature.value);
22 Endpoints

API Reference

Complete JSON-RPC interface — sessions, wallets, keys, signing and encryption

create_session Session

Creates a new session, returns auth token

in: salt?
out: { token }
close_session Session

Closes session, releases resources

in: token
out: {}
create Wallet

Creates a new wallet, auto-generates password

in: token, wallet_name, password?, is_temporary?
out: { password }
open Wallet

Opens wallet from disk into session

in: token, wallet_name
out: {}
close Wallet

Closes wallet (file remains on disk)

in: token, wallet_name
out: {}
has_wallet Wallet

Checks if wallet exists

in: token, wallet_name
out: { exists: bool }
list_wallets Wallet

Lists open wallets in session

in: token
out: { wallets: [{name, unlocked}] }
list_created_wallets Wallet

Lists all wallets on disk

in: token
out: { wallets: [{name, unlocked}] }
lock Locking

Locks wallet (keys cleared from memory)

in: token, wallet_name
out: {}
lock_all Locking

Locks all wallets in session

in: token
out: {}
unlock Locking

Unlocks wallet with password

in: token, wallet_name, password
out: {}
set_timeout Locking

Sets auto-lock timeout (default 900s)

in: token, seconds: uint32
out: {}
is_wallet_unlocked Locking

Checks if wallet is unlocked

in: token, wallet_name
out: { unlocked: bool }
import_key Keys

Imports a WIF private key

in: token, wallet_name, wif_key
out: { public_key }
import_keys Keys

Batch import of private keys

in: token, wallet_name, wif_keys[]
out: { public_keys[] }
remove_key Keys

Removes a private key

in: token, wallet_name, public_key
out: {}
get_public_keys Keys

Lists public keys

in: token, wallet_name?
out: { keys: [{public_key}] }
has_matching_private_key Keys

Checks if wallet holds the private key

in: token, wallet_name, public_key
out: { exists: bool }
sign_digest Signing

Signs a transaction digest

in: token, sig_digest, public_key, wallet_name?
out: { signature (hex) }
encrypt_data Encryption

Encrypts data via ECDH

in: token, wallet_name, from_public_key, to_public_key, content, nonce?
out: { encrypted_content }
decrypt_data Encryption

Decrypts data

in: token, wallet_name, from_public_key, to_public_key, encrypted_content
out: { decrypted_content }
get_info System

Server time and auto-lock info

in: token
out: { now, timeout_time }
get_version System

Git revision SHA (no token required)

in: none
out: { version }
Why Beekeeper

Stop managing keys manually

Feature Beekeeper Manual
Encrypted wallet storage
Auto-lock on inactivity
Multi-session support
HTTP/WebSocket API
Browser WASM support
Transaction signing
Key import/export
Memo encryption
Bundle < 274 KB N/A
Quick Start

Up and running in minutes

1

Install the package

Add Beekeeper to your project with your package manager of choice

bash
npm install @hiveio/beekeeper
2

Create a wallet

Initialize Beekeeper and create an encrypted wallet

typescript
import { createBeekeeper } from "@hiveio/beekeeper";

const beekeeper = await createBeekeeper();
const session = beekeeper.createSession("salt");
const wallet = await session.createWallet("my_wallet", "pass");
3

Sign transactions

Import keys and sign transaction digests securely

typescript
await wallet.importKey("5JkFnXrLM2ap...");
const sig = wallet.signDigest("9a37a3...");
console.log(sig.value);