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.
What database does Project Atlas use?
as of 2026-09-30
- 2026-03-04Superseded“We’re standardizing on PostgreSQL 16.”
- 2026-05-12Lineage“The Atlas project is moving to PostgreSQL 17.”
- 2026-07-08Contradiction“Atlas is still running 16 in production.”
- 2026-08-19Out of context“Keep legacy services on 16.”
- 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 worksCore technologies
Built to reason through time.
Six systems working together to resolve what was true, what changed, and what matters now.
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.
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.
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.
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.
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.
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.
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.
Resuming run 214 · session 41
QueryWhat are my current reporting instructions?
Resolved context
Publish the weekly report every Friday with incident summaries, as instructed on April 9, 2026.
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 continuityCan we roll out company-wide now?
QueryWhat rollout plan applies to Acme now?
Resolved context
Acme replaced its company-wide launch with a pilot on September 24, 2026, and the wider rollout waits for its security review.
Not yet. You’re starting with a pilot until the security review is complete.
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- import { Queue } from "./queue";
- import { redis } from "./redis";
- export const jobs = new Queue(redis);
QueryWhy does this service use Redis instead of PostgreSQL for its queue?
Resolved context
Redis was selected for low-latency job processing, replacing the proposed PostgreSQL queue.
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- Request
- Check
- Approve
- Refund
QueryWhat approval requirements apply to a $640 refund?
Resolved context
A $640 refund requires a manager’s approval: the $500 threshold replaced the $1,000 threshold on September 12, 2026.
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.
- Mar 40.94Atlas standardizes on PostgreSQL 16.
- Apr 20.81Billing reads from Atlas’s database.
- Apr 200.92Atlas must stay on 16 until Q4.
- May 120.95Atlas will adopt PostgreSQL 17, replacing the PostgreSQL 16 standard, by June.
Ranked by similarity. No relationships.
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.
May 12Atlas will adopt PostgreSQL 17, replacing the PostgreSQL 16 standard, by June.
- supersedesMar 4Atlas standardizes on PostgreSQL 16.
- contradictsApr 20Atlas must stay on 16 until Q4.
- relatedApr 2Billing reads from Atlas’s database.
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.
# 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.
}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 morePricing
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
Starter
Bring your first agent into production.
$20per month
- 50,000 reads a month
- 5,000 writes a month
- 5,000 stored memories
- 10 projects
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
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
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.
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.
| Feature | Free | Starter | Growth | Scale | Custom |
|---|---|---|---|---|---|
| Price and capacity | |||||
| Price per month | $0 | $20 | $99 | $499 | Let’s talk |
| Reads per month | 10,000 | 50,000 | 300,000 | 3,000,000 | Custom |
| Writes per month | 1,000 | 5,000 | 30,000 | 250,000 | Custom |
| Stored memories | 500 | 5,000 | 50,000 | 500,000 | Custom |
| Projects | 3 | 10 | Unlimited | Unlimited | Unlimited |
| Memory engine | |||||
| Point-in-Time Reasoning for AI™ | Included | Included | Included | Included | Included |
| Supersession | Included | Included | Included | Included | Included |
| Contradiction | Included | Included | Included | Included | Included |
| Adaptive Relevance | Included | Included | Included | Included | Included |
| Temporal Graph | Included | Included | Included | Included | Included |
| Full Lineage | Included | Included | Included | Included | Included |
| Visual graph of memories and relationships | Included | Included | Included | Included | Included |
| Resolved context | Included | Included | Included | Included | Included |
| Scoped memory for organizations, users, agents, apps and teams | Included | Included | Included | Included | Included |
| Memory control | |||||
| Memory policies | Included | Included | Included | Included | Included |
| Keyword filtering | Included | Included | Included | Included | Included |
| Semantic filtering | Included | Included | Included | Included | Included |
| Memory filtering by scope and date | Included | Included | Included | Included | Included |
| Security and administration | |||||
| Project isolation | Included | Included | Included | Included | Included |
| API keys with expiry and revocation | Included | Included | Included | Included | Included |
| Team members and admin roles | Included | Included | Included | Included | Included |
| Activity logs | Included | Included | Included | Included | Included |
| Single sign-on (SSO) | Not included | Not included | Not included | Included | Included |
| SCIM provisioning | Not included | Not included | Not included | Not included | Included |
| Private deployment | Not included | Not included | Not included | Not included | Included |
| Integrations | |||||
| REST API | Included | Included | Included | Included | Included |
| MCP server | Included | Included | Included | Included | Included |
| Dashboard and Playground | Included | Included | Included | Included | Included |
| Plugins* | Included | Included | Included | Included | Included |
| Custom integrations | Not included | Not included | Not included | Not included | Included |
| Support | |||||
| Support channel | Community | Private Slack | Private Slack | Dedicated | |
* 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