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.
- Sign in with Google or GitHub.
- On first sign-in, your enterprise is created automatically. There's no approval step and no waitlist - you can call the API right away.
- 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.
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
- Explore the full API Reference.
- Read the memchat source to
see each
memory:queryandmemory:commitcall an agent makes.