Skip to content

Getting started

Jennah is the backend your agents run on. This guide covers its memory layer - semantic recall, knowledge graph, and durable state over a single memory transport.

1. Onboard

Sign in at the console - your first sign-in is your signup. It creates your account and provisions an enterprise (your workspace) with you as its root member; you can invite teammates into it later.

Open the console

  1. Sign in with Google or GitHub.
  2. On first sign-in, your enterprise is created automatically. There's no approval step and no waitlist - you can call the API right away.
  3. Every new enterprise starts a 30-day free trial, stamped at signup. When it lapses, agents and the memory APIs are paused - nothing is deleted, but reads and writes are rejected (console, CLI, and API keys alike) until the account is upgraded.

Once you're in, mint an API key - this is what the CLI and any agent (like the demo below) use to authenticate. Keys are scoped to your active enterprise and can be created by a root or admin member.

Open Settings → API keys, create a key with a label (e.g. memchat), and copy the secret. It's shown once - store it somewhere safe.

curl -sX POST https://jennah.alphaus.cloud/v1/apikeys \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"label":"memchat"}'

The response's secret (prefixed jennah_sk_) is returned exactly once and cannot be retrieved again - only its hash is stored. Save it now.

The secret is shown only once

Jennah stores only a hash of the key. If you lose the secret, revoke the key and mint a new one.

2. Install the CLI

jnh is the Jennah command-line client. It signs you in with Google or GitHub (browser loopback, or a device-code flow for headless/SSH sessions) and calls the API over plain HTTP/JSON - no SDK or gRPC dependency. That is deliberate, not a gap: building your own integration on gRPC is fully supported, and the CLI stays on the HTTP path so it keeps exercising the same public surface an integrator gets.

brew install flowerinthenight/tap/jnh

Already have the tap from another formula? Run brew update first so Homebrew picks up the cask.

curl -fsSL https://storage.googleapis.com/jennah-cli-dist/install.sh | bash
irm https://storage.googleapis.com/jennah-cli-dist/install.ps1 | iex

Every route pulls the same release archive from a public bucket (no GitHub token or GCP auth needed) and verifies its checksum before putting the jnh binary on your PATH. Verify and sign in:

jnh version
jnh login                 # Google by default; --provider github to switch
jnh login --device        # headless/SSH: prints a code to enter in a browser
jnh whoami                # confirm the signed-in identity and active enterprise

Credentials are saved locally and refreshed automatically. From here you can manage agent workspaces and inspect their memory:

jnh agents list
jnh agents create my-agent
jnh agents memory query my-agent --text "..."
jnh upgrade               # self-update to the latest release

Pin a version

Set JENNAH_VERSION=jnh-v1.2.3 before running the installer to pin an exact release, or JENNAH_INSTALL_DIR to install somewhere other than the default.

Upgrading a Homebrew install

jnh upgrade replaces the binary in place, which for a Homebrew install is the file Homebrew tracks - it will still work, but Homebrew keeps reporting the version it installed. If you installed with Homebrew, prefer brew upgrade jnh instead.

3. Run the memchat demo

memchat is a small chatbot that remembers across sessions. It consumes the same public memory APIs any external agent would - HTTP/JSON through the gateway, authenticated with your jennah_sk_ key - providing semantic recall of past conversation and knowledge graph over one memory transport. It is a standalone Go module and reference implementation.

Prerequisites

  • A Jennah API key from step 1, on an enterprise whose trial is still active (or that has been upgraded).
  • A chat model - either Anthropic or Gemini (via Google AI Studio with an API key, or via Vertex AI with a GCP project + ADC).
  • Go 1.21+.

Run it

git clone https://github.com/nightblue-io/jennah-memchat/
cd jennah-memchat/
go build -o memchat .                    # build the binary once
export JENNAH_API_KEY=jennah_sk_...      # the secret from step 1

# Option A - Anthropic:
export ANTHROPIC_API_KEY=sk-ant-...
./memchat -verbose

# Option B - Gemini via Google AI Studio (simplest):
export GEMINI_API_KEY=...                # or GOOGLE_API_KEY
./memchat -verbose

# Option C - Gemini via Vertex AI (GCP project + ADC, no API key):
gcloud auth application-default login    # once
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT=my-gcp-project
export GOOGLE_CLOUD_LOCATION=us-central1 # optional; defaults to "global"
./memchat -verbose

-provider auto (the default) picks Anthropic when an Anthropic key is configured, otherwise Gemini (a Gemini or Vertex/GCP env); force it with -provider gemini|anthropic. On start it prints the chosen brain, e.g. chat model: anthropic/claude-sonnet-4-5.

Try it

Talk to it, quit (/exit or Ctrl+D), then run it again - it recalls what you told it. Cross-session memory is just reusing the same agent_instance_id, persisted to memchat-state.json (delete that file to start a fresh persona).

you> Hi, I'm Alice, I'm a backend engineer in Berlin and I'm learning to sail.
...quit, relaunch...
you> what do you remember about me?

Next steps