Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Feat]: Add Apache AGE as an alternative graph backend for episodic memory #1324

@reffdev

Description

@reffdev

Is your feature request related to a problem?

MemMachine's episodic memory requires a graph database. The default, Neo4j Community Edition, is GPLv3 - a license that's incompatible with many commercial and vendored deployments, and a hard blocker for shipping MemMachine inside Apache-2.0 products. NebulaGraph is already supported as an Apache-2.0 alternative, but it's a distributed 3-role system (meta + storage + graph) that's operationally heavy for single-instance and small-cluster deployments.

Separately, MemMachine already requires PostgreSQL + pgvector for semantic memory. A minimal deployment today runs two database services side by side (Neo4j for graph, Postgres for vectors) even though a lot of users would be happy with one.

Describe the solution you'd like

Add Apache AGE (Apache-2.0) as a third supported backend behind the existing VectorGraphStore interface. AGE is a PostgreSQL extension that adds openCypher support, so the graph store can live inside the same Postgres instance as the pgvector-backed semantic memory - one database service for the whole stack.

At a high level, this means:

  • A new AGE-backed VectorGraphStore implementation that slots in alongside the existing Neo4j and NebulaGraph ones.
  • Configuration plumbing (provider: age in configuration.yml) similar to the other graph backends.
  • Deployment parity: Docker Compose and the Helm chart both able to stand up a single-Postgres AGE stack out of the box, not just Neo4j.
  • Test coverage at parity with the existing backend integrations.

The end-user story: pick AGE if you want an Apache-2.0-licensed stack running on a single Postgres. Pick Neo4j for the existing default. Pick NebulaGraph when you genuinely need distributed-scale graphs. Three backends, clearly differentiated by deployment profile.

Describe alternatives you've considered

  • NebulaGraph alone: already supported and Apache-2.0, but not bundled in the helm chart and not a good fit for single-instance deployments. Doesn't address the "two database services" operational footprint either.
  • Sticking with Neo4j-only: not viable for users blocked by GPLv3.
  • Other openCypher-over-Postgres projects (e.g. Bitnine's predecessor of AGE): AGE is the ASF-incubated successor and the canonical choice going forward.
  • Keeping Postgres and Neo4j as two separate services but replacing Neo4j with something lighter: doesn't solve the license problem and adds a third backend to maintain without consolidating infrastructure.

Additional context

An implementation is done - a PR is ready to review and will be submitted after this issue is opened.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions