Skip to content

Take your data with you

View as Markdown

Your identity is the root in your wallet. It is never on this node, so nothing here is you. What you can take away is what is yours: your contacts, your chats and the files in them — one identity at a time, in one zip that the cloud and any other HDTP host read too.

hdtp-gateway export -slug alina -out alina.zip
hdtp-gateway import alina.zip -slug alina # shows what it would write, writes nothing
hdtp-gateway import alina.zip -slug alina -yes # writes it

Both are offline (stop the node first) and both need host shell access. They work on SQLite and on Postgres alike, because the file is written through the node’s own store rather than copied out of a database.

The file is not encrypted. Anyone who gets it can read your contact list and all your conversations and files; export says so before it writes. It holds no keys, so it cannot be used to speak as you — no leaf’s key, not the node’s master key — and no settings, integration credentials, tokens, passkeys, invites or audit history: those belong to the host that made them. Keep it where you keep private documents, and delete it once it has been imported.

An import checks the whole file before it writes anything, and refuses it whole at the first fault. Into a slug that is not here, the identity arrives with its root and nothing more — not served until your wallet issues this host a leaf; into the identity it belongs to, it merges, and every pin this host already holds stands. Either way it ends with a request for a new leaf that the import makes itself (complete it in your web wallet from the portal, or with the CLI wallet from the request it prints; account certificate and doctor keep naming it until it is done), and installing that leaf tells the imported contacts where you are now. An export reads its own file back before it reports it, and warns when the file is more than BatonDeck takes back in.