Skip to content

Point-in-Time Reasoning for AI™

It’s not retrieval. It’s memory for AI agents that resolves what’s true now, and remembers how it changed.

as of 2026-09-30

  1. 2026-03-04Superseded“We’re standardizing on PostgreSQL 16.”
  2. 2026-05-12Lineage“The Atlas project is moving to PostgreSQL 17.”
  3. 2026-07-08Contradiction“Atlas is still running 16 in production.”
  4. 2026-08-19Out of context“Keep legacy services on 16.”
  5. 2026-09-23Current“Atlas finished its move to 17.”

Resolved

PostgreSQL 17.

Resolved through March → May → July → September.

You told it what was true. Then things changed.

You gave it the history. It lost the timeline.

Your AI can’t tell what still matters.

What if it could?

See how it works 

Core technologies

Built to reason through time.

Six systems working together to resolve what was true, what changed, and what matters now.

  1. Reason from the right moment. Ask about now and Alvia reasons from what’s current. Every earlier version stays on record with its date and the reason it changed. Same history. Right context for the moment.

  2. Reality changes. Alvia changes with it. New information doesn’t simply accumulate. Alvia recognizes when one truth replaces another, preserving what came before without confusing it with what’s true now.

  3. Not every conflict has an immediate answer. When information disagrees, Alvia preserves the contradiction instead of guessing it away. Conflicting truths remain explicit until there’s enough context to resolve them.

  4. What matters stays sharp. Information shouldn’t remain equally important forever. Time, reinforcement, context, and significance continuously shape relevance. The incidental recedes. What continues to matter stays within reach.

  5. Every fact has a when. Alvia connects information through meaning and time, preserving what was true, when it was true, what changed, and what followed.

  6. Every answer has a history. Trace the path from what was known to what became true, through changes, contradictions, relationships, and time. Nothing important gets flattened into a black box.

supersedescontradictsresolvesrelatedas of Apr 30Mar 4Standardize on PostgreSQL 16.May 12Atlas moves to PostgreSQL 17.Jul 8Atlas still runs 16 in production.Aug 19Keep legacy services on 16.Sep 23Atlas finished its move to 17.

Resolved

PostgreSQL 16.

In April, only March had been said.

Use cases

The right context. For whatever you’re building.

From AI assistants to autonomous workflows, Alvia turns evolving information into resolved context. Ask a question. Get back what matters, without sorting through the history yourself.

  • Long-running agents Pick up where your agent left off.

    Agents run across sessions, but goals, instructions, and decisions change. Alvia returns the context that still matters, without replaying the entire history.

    See how agents maintain continuity 
  • AI applications Give your application answers that stay current.

    Users, accounts, projects, and organizations change. Alvia resolves their evolving context so your application can respond using the information that applies.

    Build with evolving context 
  • Coding agents Give coding agents the decisions behind the code.

    Requirements change. Architecture evolves. Decisions get reversed. Alvia returns the decision that applies now and the reason behind it, so coding agents work from what still governs the code.

    Follow decisions through the codebase 
  • Automated workflows Keep workflows informed as conditions change.

    Policies, instructions, and business conditions evolve. Alvia returns the context that applies so your workflows can evaluate their next step against current information.

    Keep workflows on the right state 

Memory, Re‑Engineered

A vector database isn’t a memory system.

Storing information is easy. Understanding how new information changes what came before is the hard part. Similarity search alone can’t tell you what’s outdated, what conflicts, or what still matters.

The conventional approach Store now. Figure it out later.

Information is embedded, indexed, and retrieved by similarity. As history grows, outdated decisions and contradictions accumulate. The application must reconcile them or defer cleanup to another process.

They built a better filing cabinet.

The Alvia approach Resolve it when it happens.

Alvia evaluates information as it arrives. It tracks supersession, preserves contradictions, and establishes relationships during memory formation, not in a later cleanup cycle.

We built memory that resolves change.

Memory shouldn’t need to catch up with itself.

Some systems store first and dream about reconciling later.

Alvia doesn’t sleep on it.

Every memory is evaluated as it arrives. Contradictions identified. Supersession tracked. Relationships established.

Real memory starts at formation, not cleanup.

Integrations

Your tools. Your agents. One context layer.

Connect through MCP or REST. Give your agents and applications persistent, resolved context without rebuilding your stack.

Connect with the tools you already use.

Add Alvia to Claude Code · Global

Explorer

Integrations

Coming Soon

  • Hermes
  • OpenClaw
  • SDK
  • Plugins

MCP Clients › Claude Code › Global

# Available across all Claude Code projects.
# API key is stored locally, never in source control.
# Replace <API_KEY> with a key from the Alvia dashboard.

claude mcp add \
  --scope user \
  --transport http \
  alvia https://api.alvia.ai/mcp \
  --header "Authorization: Bearer <API_KEY>"
# Run from your project's root directory.
# Each project can use its own Alvia API key.
# Configuration stays local and is never committed.
# Replace <API_KEY> with a key from the Alvia dashboard.

claude mcp add \
  --scope local \
  --transport http \
  alvia https://api.alvia.ai/mcp \
  --header "Authorization: Bearer <API_KEY>"
[mcp_servers.alvia]
url = "https://api.alvia.ai/mcp"
# Replace <API_KEY> with a key from the Alvia dashboard.
http_headers = { "Authorization" = "Bearer <API_KEY>" }
{
  "mcpServers": {
    "alvia": {
      "url": "https://api.alvia.ai/mcp",
      "headers": { "Authorization": "Bearer <API_KEY>" }
    }
  }
}
# Alvia's remote MCP server, over streamable HTTP
https://api.alvia.ai/mcp

# Authenticate every request with your API key.
# Replace <API_KEY> with a key from the Alvia dashboard.
Authorization: Bearer <API_KEY>
# Replace <API_KEY> with a key from the Alvia dashboard.
curl -X POST https://api.alvia.ai/v1/memories \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"content": "Atlas finished its move to PostgreSQL 17.", "occurred_at": "2026-09-23T14:00:00Z"}'
# Replace <API_KEY> with a key from the Alvia dashboard.
curl -X POST https://api.alvia.ai/v1/memories/import \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {"role": "user", "content": "Atlas finished its move to PostgreSQL 17 today."},
      {"role": "assistant", "content": "Noted: Atlas now runs on PostgreSQL 17."}
    ],
    "occurred_at": "2026-09-23T14:00:00Z"
  }'
# Replace <API_KEY> with a key from the Alvia dashboard.
curl -X POST https://api.alvia.ai/v1/memories/context \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"query": "What database does Atlas use?"}'

# {"context": "Atlas moved to PostgreSQL 17 on September 23, 2026."}
import requests

response = requests.post(
    "https://api.alvia.ai/v1/memories",
    # Replace <API_KEY> with a key from the Alvia dashboard.
    headers={"Authorization": "Bearer <API_KEY>"},
    json={"content": "Atlas finished its move to PostgreSQL 17.", "occurred_at": "2026-09-23T14:00:00Z"},
)
import requests

response = requests.post(
    "https://api.alvia.ai/v1/memories/import",
    # Replace <API_KEY> with a key from the Alvia dashboard.
    headers={"Authorization": "Bearer <API_KEY>"},
    json={
        "messages": [
            {"role": "user", "content": "Atlas finished its move to PostgreSQL 17 today."},
            {"role": "assistant", "content": "Noted: Atlas now runs on PostgreSQL 17."},
        ],
        "occurred_at": "2026-09-23T14:00:00Z",
    },
)
import requests

response = requests.post(
    "https://api.alvia.ai/v1/memories/context",
    # Replace <API_KEY> with a key from the Alvia dashboard.
    headers={"Authorization": "Bearer <API_KEY>"},
    json={"query": "What database does Atlas use?"},
)
print(response.json()["context"])
# Atlas moved to PostgreSQL 17 on September 23, 2026.
const response = await fetch("https://api.alvia.ai/v1/memories", {
  method: "POST",
  headers: {
    // Replace <API_KEY> with a key from the Alvia dashboard.
    Authorization: "Bearer <API_KEY>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ content: "Atlas finished its move to PostgreSQL 17.", occurred_at: "2026-09-23T14:00:00Z" }),
});
const response = await fetch("https://api.alvia.ai/v1/memories/import", {
  method: "POST",
  headers: {
    // Replace <API_KEY> with a key from the Alvia dashboard.
    Authorization: "Bearer <API_KEY>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    messages: [
      { role: "user", content: "Atlas finished its move to PostgreSQL 17 today." },
      { role: "assistant", content: "Noted: Atlas now runs on PostgreSQL 17." },
    ],
    occurred_at: "2026-09-23T14:00:00Z",
  }),
});
const response = await fetch("https://api.alvia.ai/v1/memories/context", {
  method: "POST",
  headers: {
    // Replace <API_KEY> with a key from the Alvia dashboard.
    Authorization: "Bearer <API_KEY>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ query: "What database does Atlas use?" }),
});
const { context } = await response.json();
// "Atlas moved to PostgreSQL 17 on September 23, 2026."
using System.Net.Http.Json;

var http = new HttpClient();
// Replace <API_KEY> with a key from the Alvia dashboard.
http.DefaultRequestHeaders.Add("Authorization", "Bearer <API_KEY>");

var response = await http.PostAsJsonAsync(
    "https://api.alvia.ai/v1/memories",
    new { content = "Atlas finished its move to PostgreSQL 17.", occurred_at = "2026-09-23T14:00:00Z" });
using System.Net.Http.Json;

var http = new HttpClient();
// Replace <API_KEY> with a key from the Alvia dashboard.
http.DefaultRequestHeaders.Add("Authorization", "Bearer <API_KEY>");

var response = await http.PostAsJsonAsync(
    "https://api.alvia.ai/v1/memories/import",
    new {
        messages = new[] {
            new { role = "user", content = "Atlas finished its move to PostgreSQL 17 today." },
            new { role = "assistant", content = "Noted: Atlas now runs on PostgreSQL 17." },
        },
        occurred_at = "2026-09-23T14:00:00Z",
    });
using System.Net.Http.Json;
using System.Text.Json;

var http = new HttpClient();
// Replace <API_KEY> with a key from the Alvia dashboard.
http.DefaultRequestHeaders.Add("Authorization", "Bearer <API_KEY>");

var response = await http.PostAsJsonAsync(
    "https://api.alvia.ai/v1/memories/context",
    new { query = "What database does Atlas use?" });
var body = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(body.GetProperty("context"));
// Atlas moved to PostgreSQL 17 on September 23, 2026.
package main

import (
	"bytes"
	"encoding/json"
	"net/http"
)

func main() {
	body, _ := json.Marshal(map[string]any{"content": "Atlas finished its move to PostgreSQL 17.", "occurred_at": "2026-09-23T14:00:00Z"})
	req, _ := http.NewRequest("POST", "https://api.alvia.ai/v1/memories", bytes.NewReader(body))
	// Replace <API_KEY> with a key from the Alvia dashboard.
	req.Header.Set("Authorization", "Bearer <API_KEY>")
	req.Header.Set("Content-Type", "application/json")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
}
package main

import (
	"bytes"
	"encoding/json"
	"net/http"
)

func main() {
	body, _ := json.Marshal(map[string]any{
		"messages": []any{
			map[string]any{"role": "user", "content": "Atlas finished its move to PostgreSQL 17 today."},
			map[string]any{"role": "assistant", "content": "Noted: Atlas now runs on PostgreSQL 17."},
		},
		"occurred_at": "2026-09-23T14:00:00Z",
	})
	req, _ := http.NewRequest("POST", "https://api.alvia.ai/v1/memories/import", bytes.NewReader(body))
	// Replace <API_KEY> with a key from the Alvia dashboard.
	req.Header.Set("Authorization", "Bearer <API_KEY>")
	req.Header.Set("Content-Type", "application/json")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
}
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	body, _ := json.Marshal(map[string]any{"query": "What database does Atlas use?"})
	req, _ := http.NewRequest("POST", "https://api.alvia.ai/v1/memories/context", bytes.NewReader(body))
	// Replace <API_KEY> with a key from the Alvia dashboard.
	req.Header.Set("Authorization", "Bearer <API_KEY>")
	req.Header.Set("Content-Type", "application/json")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	var out struct {
		Context string `json:"context"`
	}
	json.NewDecoder(resp.Body).Decode(&out)
	fmt.Println(out.Context)
	// Atlas moved to PostgreSQL 17 on September 23, 2026.
}
mainUTF-8Shell Script

Security

Security isn’t an add-on. It’s part of the architecture.

As context grows, so does its sensitivity. Alvia enforces strict isolation, explicit access boundaries, and security controls throughout the memory lifecycle.

  • Project isolation Isolated by design.

    Every memory belongs to a tenant and project. Storage, relationships, and retrieval are isolated by design. Context never crosses project boundaries.

  • Project-bound API keys Access without overreach.

    Every API key belongs to a project. It cannot access another project’s memories, relationships, or context.

  • Memory scopes Boundaries within boundaries.

    Memory is partitioned by organization, user, agent, application or team. A read returns the memories that match every scope it sends, and a new memory relates only to memories in its own scope.

  • Zero-trust requests Every request earns access.

    Every request is authenticated and limited to its key’s project. Scope then narrows what it reads; your application decides which scope each user may use.

  • Memory policies Your memory. Your rules.

    Define what becomes a memory using keywords or natural-language policies. Exclude sensitive information, restrict specific topics, and control what enters your agents’ context.

  • Deletion and audit records Track changes. Control what remains.

    Delete project memories and their relationships. Audit records track access, changes, and processing.

Your agents get the context they need. Nothing outside their boundaries.

Learn more 

Pricing

Start free. Scale when you’re ready.

From your first agent to production at scale. Choose the capacity you need, with the same capabilities on every plan.

  • Free

    Build, experiment, and see Alvia in action.

    $0per month

    • 10,000 reads a month
    • 1,000 writes a month
    • 500 stored memories
    • 3 projects
    Get Startedwith Free
  • Growth

    Scale context across agents and applications.

    $99per month

    • 300,000 reads a month
    • 30,000 writes a month
    • 50,000 stored memories
    • Unlimited projects
    Get Startedwith Growth
  • Scale

    Built for demanding production workloads.

    $499per month

    • 3,000,000 reads a month
    • 250,000 writes a month
    • 500,000 stored memories
    • Unlimited projects
    Get Startedwith Scale

Custom

Your infrastructure. Your requirements.

Deploy Alvia on your terms, with the infrastructure, identity integration, and support your organization requires.

  • Enterprise SSO & SCIM

    Centralized authentication and user provisioning.

  • Private deployments

    Run Alvia in your own environment.

  • Custom capacity

    Usage limits tailored to your workloads.

  • Custom terms & support

    Terms and support built around your requirements.

Talk to us 

Compare plans

The full engine. On every plan.

Every plan, Free included, runs the same memory engine. Higher plans add capacity, support and enterprise controls.

What each plan includes
FeatureFreeStarterGrowthScaleCustom
Price and capacity
Price per month$0$20$99$499Let’s talk
Reads per month10,00050,000300,0003,000,000Custom
Writes per month1,0005,00030,000250,000Custom
Stored memories5005,00050,000500,000Custom
Projects310UnlimitedUnlimitedUnlimited
Memory engine
Point-in-Time Reasoning for AI™IncludedIncludedIncludedIncludedIncluded
SupersessionIncludedIncludedIncludedIncludedIncluded
ContradictionIncludedIncludedIncludedIncludedIncluded
Adaptive RelevanceIncludedIncludedIncludedIncludedIncluded
Temporal GraphIncludedIncludedIncludedIncludedIncluded
Full LineageIncludedIncludedIncludedIncludedIncluded
Visual graph of memories and relationshipsIncludedIncludedIncludedIncludedIncluded
Resolved contextIncludedIncludedIncludedIncludedIncluded
Scoped memory for organizations, users, agents, apps and teamsIncludedIncludedIncludedIncludedIncluded
Memory control
Memory policiesIncludedIncludedIncludedIncludedIncluded
Keyword filteringIncludedIncludedIncludedIncludedIncluded
Semantic filteringIncludedIncludedIncludedIncludedIncluded
Memory filtering by scope and dateIncludedIncludedIncludedIncludedIncluded
Security and administration
Project isolationIncludedIncludedIncludedIncludedIncluded
API keys with expiry and revocationIncludedIncludedIncludedIncludedIncluded
Team members and admin rolesIncludedIncludedIncludedIncludedIncluded
Activity logsIncludedIncludedIncludedIncludedIncluded
Single sign-on (SSO)Not includedNot includedNot includedIncludedIncluded
SCIM provisioningNot includedNot includedNot includedNot includedIncluded
Private deploymentNot includedNot includedNot includedNot includedIncluded
Integrations
REST APIIncludedIncludedIncludedIncludedIncluded
MCP serverIncludedIncludedIncludedIncludedIncluded
Dashboard and PlaygroundIncludedIncludedIncludedIncludedIncluded
Plugins*IncludedIncludedIncludedIncludedIncluded
Custom integrationsNot includedNot includedNot includedNot includedIncluded
Support
Support channelCommunityEmailPrivate SlackPrivate SlackDedicated

* Plugins join every plan as they become available.

FAQ

Frequently asked questions

How does usage work?

Every plan includes monthly read and write allowances and a fixed memory capacity. Reads retrieve context, while writes submit information for memory formation. A context call uses 5 reads and an inspect 3; list, search and recall use 1 read each. Monthly allowances reset on the first of each month. Stored memories persist and count toward your plan’s capacity until forgotten.

What happens if I exceed my monthly limits?

On every plan, reads or writes stop when their monthly allowance is used up and resume on the first of the following month, or as soon as you upgrade. There are no overage charges.

All plans enforce memory capacity limits. Once reached, new memories cannot be formed until capacity is available.

Are there rate limits?

Yes. Every plan uses token-bucket rate limiting to ensure fair usage. Paid plans support substantially higher throughput and request bursts. Requests exceeding the available rate limit receive HTTP 429 responses.

Detailed limits are available in the documentation.

What counts as a stored memory?

Each retained memory counts once, regardless of its revision history. A memory with ten revisions still counts as one. Forgetting a memory releases its capacity once the operation is processed.

Are features restricted by plan?

No. Every plan, including Free, includes Alvia’s complete memory capabilities. Supersession, contradiction detection, temporal reasoning, and other core technologies are available without upgrading. Plans differ by capacity and throughput, not intelligence.

How does billing work?

Subscriptions are billed on the first of each month. Your initial payment is prorated based on when you subscribe, but your full plan allowances are available immediately. Upgrades take effect immediately, with prorated billing adjustments.

There are no hidden fees or automatic overage charges.

Can I change or cancel my plan?

Yes. Upgrade, downgrade, or cancel anytime without long-term commitments or cancellation fees. Upgrades take effect immediately. Cancellations retain paid access through the current billing period, after which your account moves to Free.

Your memories remain intact. If your stored memories exceed the new plan’s capacity, you can still retrieve existing context, but cannot form new memories until you’re below the limit.

Is my data used to train AI models?

No. Alvia never uses your memories to train or fine-tune models. Your data stays within its project.

Can I deploy Alvia in my own environment?

Yes. Custom plans support private deployments, enterprise SSO and SCIM provisioning, tailored capacity, and custom support agreements. Contact us to discuss your infrastructure and security requirements.

Can I export my memories?

Yes. Your memories belong to you. You can list every memory and inspect its versions through the API.

Get started

Your AI has the history. Now give it what still matters.