pali

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2026 License: MIT

README

Pali

Go Version License Status

Pali

Open memory for your LLM.

Pre-release, close to usable

Pali is open memory infrastructure for LLM and agent systems. It gives you a local API server, MCP server, operator dashboard, and configurable retrieval stack behind one runtime.

Demo

Pali dashboard demo

Quickstart

Install on macOS or Linux
curl -fsSL https://raw.githubusercontent.com/pali-mem/pali/main/scripts/install.sh | sh
Install on Windows PowerShell
irm https://raw.githubusercontent.com/pali-mem/pali/main/scripts/install.ps1 | iex
Initialize and run
pali init
pali serve

Health:

curl http://127.0.0.1:8080/health

Dashboard:

open http://127.0.0.1:8080/dashboard

If you prefer a source checkout instead of a release binary:

git clone https://github.com/pali-mem/pali.git
cd pali
make setup
make run

Docs Center

Start here for the full guides:

What Pali Does

  • Multi-tenant memory APIs with tenant-scoped isolation
  • Hybrid retrieval across lexical, dense, reranking, and optional multi-hop expansion
  • MCP server with memory-first tools
  • Operator dashboard for tenants, memories, and system state
  • Configurable backends for vectors, entity facts, embeddings, and scoring

Current v0.1 core capabilities:

  • Memory CRUD and batch ingest APIs
  • Async post-processing pipeline with job tracking
  • Lexical plus dense candidate fusion via RRF
  • WMR reranking
  • Tenant statistics and routing support
  • Tier auto-resolution (episodic vs semantic)
  • Optional JWT tenant-scoped auth

Install and Run Options

Release binary

The install scripts download the latest GitHub Release asset for your platform, verify checksums, and place pali on your machine.

Manual release downloads are also available from GitHub Releases:

  • Linux/macOS archives: pali_<version>_<os>_<arch>.tar.gz
  • Windows archives: pali_<version>_windows_<arch>.zip

After install:

pali init
pali serve
Docker

Build:

docker build -t pali:local .

Run:

docker run --rm -p 8080:8080 -v pali-data:/var/lib/pali pali:local

The image uses deploy/docker/pali.container.yaml, which binds to 0.0.0.0:8080 and stores SQLite data under /var/lib/pali.

Compose files live under deploy/docker/:

docker compose -f deploy/docker/compose.yaml up --build
docker compose -f deploy/docker/compose.yaml -f deploy/docker/compose.qdrant.yaml up --build
docker compose -f deploy/docker/compose.yaml -f deploy/docker/compose.neo4j.yaml up --build
docker compose -f deploy/docker/compose.yaml -f deploy/docker/compose.ollama.yaml up --build
Source checkout

Prerequisite: Go 1.25+

git clone https://github.com/pali-mem/pali.git
cd pali
make setup
make run

CLI

pali init
pali serve
pali mcp serve

Useful init flags:

pali init -config /path/to/pali.yaml
pali init -download-model
pali init -skip-model-download
pali init -skip-runtime-check
pali init -skip-ollama-check

The init flow creates pali.yaml from pali.yaml.example when missing, prepares runtime directories, and checks optional ONNX/Ollama prerequisites based on the current config.

Config and Auth

JWT example:

auth:
  enabled: true
  jwt_secret: "change-me"
  issuer: "pali"

JWTs must include tenant_id, and /v1 requests stay tenant-scoped.

MCP and Client

MCP tools include:

  • memory_store
  • memory_store_preference
  • memory_search
  • memory_list
  • memory_delete
  • tenant_create
  • tenant_list
  • tenant_stats
  • tenant_exists
  • health_check
  • pali_capabilities

Go client example:

import (
  "context"
  "log"

  "github.com/pali-mem/pali/pkg/client"
)

func main() {
  c, err := client.NewClient("http://127.0.0.1:8080")
  if err != nil {
    log.Fatal(err)
  }

  if _, err := c.CreateTenant(context.Background(), client.CreateTenantRequest{
    ID:   "tenant_1",
    Name: "Tenant One",
  }); err != nil {
    log.Fatal(err)
  }
}

More:

Build and Release

Build locally:

make build

Install locally from source:

make install PREFIX="$HOME/.local"

Tests:

  • make test
  • make test-integration
  • make test-e2e
  • make test-all

Release assets:

VERSION=v0.1.0 make release-assets

The release workflow at .github/workflows/release.yml publishes GitHub Release binaries and a multi-arch container image to ghcr.io/pali-mem/pali.

Production Notes

  • Keep pali.yaml outside the repo in non-dev environments.
  • Enable JWT auth before exposing /v1 outside a trusted network.
  • Persist database.sqlite_dsn across restarts.
  • Put Pali behind TLS termination and a restart supervisor.
  • Monitor /health and validate config before deploy.

Full runbook: docs/operations.md

Module Path

github.com/pali-mem/pali

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL