Skip to main content
The record in a self-hosted deployment is yours to take out, in formats another program can read, and only the owner can: a care-circle member who may read your record page by page cannot download a copy of it. Every route below takes the deployment’s own account token, as the local HTTP API does.

What you can export

The web client offers the readings export on your own record.

Export with curl

The example uses the local Docker demo and its demo account; a real deployment signs in the way its users do.
1

Get a token

2

Download the readings as CSV

The first line names the columns, the standardized value and unit among them.
3

Stream the record as NDJSON

The last line is the footer: "complete": true with the row count per dataset. A file whose last line is not a footer was cut off, and a footer with "complete": false names the dataset that changed while it streamed; run it again.

Scope of the export

The NDJSON stream holds the visible observation set and names it in its manifest; files, medications, the care circle and the accounts are not in it yet, and the manifest says so by listing only what is. Nothing reads this export back into a deployment: moving a record from one Mirobody to another is the backup and restore below. What does import is other sources: an Apple Health export (mirobody import apple), CDA documents, genotype exports from 23andMe, AncestryDNA, MyHeritage, FTDNA and WeGene or a VCF, and the 23 file types the Data page reads. Open items are tracked in .

The complete copy

shell/backup.sh dumps the database and archives the uploaded files, and checks that the archive’s table of contents can be read. Keep it with the matching .env: encrypted content is unreadable without the keys in it. Backup & Restore explains the volumes, and Verify and Restore a Backup walks through a rehearsal and a recovery. To erase a stack that uses the default named volumes, docker compose down -v in its checkout removes the containers and the Postgres, upload and model volumes together.