Install a packaged release¶
The packaged release includes and supervises a checksum-pinned pg0 PostgreSQL distribution with pgvector and pgvectorscale 0.9.0.
Choose a build¶
Open MemHouse Releases,
select a version, and download the archive and adjacent .sha256 file matching
your machine:
| System | Architecture check | Archive |
|---|---|---|
| macOS, Apple Silicon | uname -m prints arm64 |
memhouse-macos-arm64.tar.gz |
| Linux, Intel/AMD 64-bit | uname -m prints x86_64 |
memhouse-linux-x86_64.tar.gz |
| Linux, ARM 64-bit | uname -m prints aarch64 or arm64 |
memhouse-linux-arm64.tar.gz |
Windows, Intel macOS, and Linux musl need external PostgreSQL with pgvector and pgvectorscale, or a container deployment.
The container build for external PostgreSQL is
ghcr.io/memhousehq/memhouse:<version>.
Download and verify¶
The browser download works without extra tools. The commands below use the
GitHub CLI to download both required files. Replace
v0.4.0 with the release tag you want.
release_tag=v0.4.0
arch=$(uname -m)
mkdir -p memhouse-download
gh release download "$release_tag" \
--repo memhousehq/memhouse \
--pattern "memhouse-macos-${arch}.tar.gz*" \
--dir memhouse-download
cd memhouse-download
shasum -a 256 -c "memhouse-macos-${arch}.tar.gz.sha256"
tar -xzf "memhouse-macos-${arch}.tar.gz"
cd memhouse
$releaseTag = "v0.4.0"
$download = "memhouse-download"
gh release download $releaseTag `
--repo memhousehq/memhouse `
--pattern "memhouse-windows-x86_64.zip*" `
--dir $download
Set-Location $download
$expected = (Get-Content memhouse-windows-x86_64.zip.sha256).Split()[0]
$actual = (Get-FileHash -Algorithm SHA256 memhouse-windows-x86_64.zip).Hash.ToLowerInvariant()
if ($actual -ne $expected) { throw "Checksum verification failed" }
Expand-Archive memhouse-windows-x86_64.zip
Set-Location memhouse
Do not run an archive when its checksum fails. Download both files again from the same release and retry verification.
Recommended local setup¶
For a single-machine installation, use the packaged PostgreSQL, keep all durable state in one private directory, and enable signed patch/minor updates before each start:
export MEMHOUSE_DATA_ROOT="$HOME/.memhouse"
export MEMHOUSE_DATABASE_MODE=pg0
export MEMHOUSE_AUTO_MIGRATE=true
export MEMHOUSE_UPDATE_CHECK=true
export MEMHOUSE_AUTO_UPDATE=minor
export MEMHOUSE_UPDATE_CHECK_INTERVAL_HOURS=24
bin/server
minor accepts only an eligible signed stable patch/minor release in the
current major version. Use bin/update --check to inspect availability, or
set MEMHOUSE_AUTO_UPDATE=off when you want to approve every update yourself.
Run it¶
From the extracted memhouse directory:
The macOS archives are not yet signed or notarized by Apple. If macOS blocks the verified build, try to open it once, then use System Settings → Privacy & Security → Open Anyway. Apple documents the security tradeoff and exact steps in Safely open apps on your Mac. Do not disable Gatekeeper globally.
On first start the launcher:
- creates a private data root at
~/.memhouse; - generates the local signing secret;
- starts the packaged pg0 binary and creates its PostgreSQL cluster;
- runs every migration against the fresh database;
- starts Phoenix on port 4000.
Confirm it is up:
A 200 means the database, job queues, and model roles are ready. A 503 names failing components with content-safe counts, versions, and error classes.
It fails closed, on purpose
If the port is occupied, or the data directory and configuration are unhealthy, the release refuses to accept traffic rather than starting in a half-working state.
Change the defaults¶
Set these before the first start; they decide where durable state is created:
| Variable | Default | Meaning |
|---|---|---|
MEMHOUSE_DATA_ROOT |
~/.memhouse |
Private data root for database, blobs, and secrets |
PORT |
4000 |
HTTP port |
MEMHOUSE_PG0_PORT |
5432 |
Port the supervised PostgreSQL listens on |
The complete list is in Configuration.
Point it at your own PostgreSQL instead¶
The same release can use operator-run PostgreSQL 18 with pgvector and
pgvectorscale 0.9.0. Boot fails with an actionable error if vectorscale is
not available to install.
export MEMHOUSE_DATABASE_MODE=external
export DATABASE_URL='ecto://user:password@db.example/memhouse'
export MEMHOUSE_AUTO_MIGRATE=true
export MEMHOUSE_AUTH_SIGNING_SECRET='at-least-64-random-bytes...'
export MEMHOUSE_BLOB_ROOT=/absolute/durable/blob/path
bin/memhouse start
Set MEMHOUSE_AUTO_MIGRATE=false when change control requires migrations to
be a separate step, then run bin/migrate before starting the release.
Build a release from source¶
The package script downloads the exact pg0 asset named in rel/pg0/VERSION,
verifies it against rel/pg0/checksums.txt, and builds the pinned pgvectorscale
source against that pg0 installation:
An approved campaign container must embed its full source revision before the release compiles:
revision=$(git rev-parse HEAD)
docker build \
--build-arg "MEMHOUSE_CAMPAIGN_BUILD_SHA=$revision" \
--tag memhouse:campaign \
.
Omit the build argument for an ordinary image. It embeds unknown, which
cannot activate campaign spend.
Next¶
- Quickstart tutorial — bootstrap an administrator and record your first observation.
- Operations overview — upgrades, backups, and running this in earnest.