Quickstart
Nexara Connect gives all your AI agents one shared, private memory made of plain markdown. In about ten minutes you will run the server, add a page, and let an agent read it.
There is no published image yet. You build it from this repository, either locally with Docker (below) or through Coolify (see Self-hosting). If you just want to try it, use the staging server at https://dev.nexara.ac and skip to step 3.
1. Build and start the server
You need Docker, git and about 1 GB of free RAM.
git clone https://github.com/Analytica-Info/nexara-connect.git
cd nexara-connect
docker build --build-arg GIT_SHA=$(git rev-parse --short HEAD) -t nexara .
docker run -d --name nexara -p 8080:8080 \
-v nexara-data:/data \
-e MASTER_KEY=$(openssl rand -hex 32) \
-e OWNER_EMAIL=you@example.com \
-e OWNER_PASSWORD='a long passphrase' \
-e PUBLIC_URL=http://localhost:8080 \
nexara
Check it is up:
curl -s http://localhost:8080/readyz
OWNER_EMAIL and OWNER_PASSWORD are read only on the very first boot, when no human exists yet. They create you as owner of the workspace main. Keep MASTER_KEY somewhere safe: without it, sealed secrets cannot be opened. If you leave it out, the server generates one into /data/master.key.
Open http://localhost:8080 and sign in. Two-factor sign-in is optional unless you start the server with REQUIRE_TOTP=true, which forces owners to enrol an authenticator app. You can enrol any time under Settings.
2. Add your first context
Spaces are top-level folders, and a page is created simply by writing to a path. The fastest way to create the Space work with one page is the REST API with your browser session. This asks for your password without echoing it:
URL=http://localhost:8080
read -r -s -p "Password: " PW; echo
J=$(mktemp)
curl -s -c $J -H 'Content-Type: application/json' \
-d "{\"email\":\"you@example.com\",\"password\":\"$PW\"}" $URL/api/auth/login > /dev/null
CSRF=$(awk '$6=="nxc_csrf"{print $7}' $J)
curl -s -b $J -H "X-CSRF-Token: $CSRF" -H 'Content-Type: application/json' $URL/api/v1/nodes -d '{
"path": "work/projects/website-relaunch.md",
"content": "---\ntitle: Website relaunch\ntype: project\nsensitivity: internal\ntags: [website]\n---\nLaunch date is 15 November. Designs are approved. Open task: migrate the blog."
}'
Already have a folder of markdown or an Obsidian vault? Zip it and use Import in the app (it needs an existing Space), or run the importer inside the container:
docker cp ./my-notes nexara:/tmp/my-notes
docker exec nexara node server/dist/cli/import.js /tmp/my-notes --space work
Your files stay plain markdown. The importer adds an id to frontmatter where it is missing and makes one commit.
3. Create an agent key
In the app go to Agents, click New agent, name it my-laptop and keep the default grant: read, search, propose, collab, watch on every Space, up to internal. Click Create agent and key and copy the key. It starts with nxc_ and is shown only once.
4. Connect an agent
Claude Code:
export NEXARA_KEY=nxc_... # the key you just copied
claude mcp add --transport http --scope user nexara http://localhost:8080/mcp \
--header "Authorization: Bearer $NEXARA_KEY"
Using Claude.ai, ChatGPT, Codex, Cursor, Gemini CLI or Hermes? See Connect your agent.
5. Ask it something
In Claude Code, ask: "Use nexara to tell me when the website relaunches." The agent calls context_bundle and answers "15 November", citing work/projects/website-relaunch.md.
Prefer the terminal? Call the REST API with the same key:
curl -s http://localhost:8080/api/v1/bundle \
-H "Authorization: Bearer $NEXARA_KEY" -H 'Content-Type: application/json' \
-H 'Accept: text/markdown' -d '{"intent":"website launch date","budget_tokens":1000}'
Or build the nexara CLI from cli/ (not on npm yet, see stdio clients) and run nexara bundle "website launch date".
6. Check what happened
Open Audit (owners only). You will see my-laptop read the page, and every agent read and write is logged in a hash-chained audit log. To cut the agent off, open Agents, pick it and revoke its key. Revocation takes effect on the next request.
Next steps
- Concepts: Spaces, sensitivity, grants and bundles
- Sync with Obsidian
- Deploy to a server
- Security model