Give both agents the same question and shared SQLite database.
Same small model. Different tool.
Watch the model issue a real tool call, SQLite execute it, and the tool result return to the model. Both lanes share one browser-local database.
Hermes emits a native function call before it can answer.
One tool returns raw SQL rows; Remembero returns bindings and proof.
The tool result goes back to the same local model for synthesis.
MODEL PROMPT:
Call the Query function exactly once with query "When should I schedule the Atlas review?".
Do not rename the function, invent another function, or write SQL or Datalog yourself.
After the tool result is returned, answer the question using only that evidence and cite its concrete values.
Question: When should I schedule the Atlas review?
TOOL SCHEMA:
{
"name": "Query",
"description": "Run the prepared read-only SQL query for the active case and return raw SQLite rows.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"enum": [
"When should I schedule the Atlas review?"
]
}
},
"required": [
"query"
],
"additionalProperties": false
}
}- Model tool call · not run
- Not run yet
- Validated call
- Not validated
- Executed SQL
- Not executed
- Tool result
- Not executed
- Final answer prompt
- Not run yet
MODEL PROMPT:
Call the Query function exactly once with query "When should I schedule the Atlas review?".
Do not rename the function, invent another function, or write SQL or Datalog yourself.
After the tool result is returned, answer the question using only that evidence and cite its concrete values.
Question: When should I schedule the Atlas review?
TOOL SCHEMA:
{
"name": "Query",
"description": "Evaluate the prepared Remembero relation for the active case and return bindings plus proof from SQLite.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"enum": [
"When should I schedule the Atlas review?"
]
}
},
"required": [
"query"
],
"additionalProperties": false
}
}- Model tool call · not run
- Not run yet
- Validated call
- Not validated
- Executed Datalog
- Not executed
- Tool result
- Not executed
- Final answer prompt
- Not run yet
- One in-memory SQLite database for both agents
- Startup probe: not verified
- Data Query adapter returns prepared, read-only SQL rows
- Remembero Query adapter uses datalog_query + datalog_explain
- No database snapshot is pasted into either model prompt
SELECT
(SELECT COUNT(*)
FROM sqlite_schema
WHERE type = 'table'
AND name IN (
'status',
'blocker',
'prefers_meeting',
'promised_update',
'pending_meeting',
'review_slot'
)) AS tableCount,
(SELECT COUNT(*) FROM status)
+ (SELECT COUNT(*) FROM blocker)
+ (SELECT COUNT(*) FROM prefers_meeting)
+ (SELECT COUNT(*) FROM promised_update)
+ (SELECT COUNT(*) FROM pending_meeting)
+ (SELECT COUNT(*) FROM review_slot) AS rowCount- Data-only final raw
- Not run yet
- Remembero final raw
- Not run yet
- Proof output appears after the recall run.
Data only
Question → model tool call → prepared SQL → raw rows
When should I schedule the Atlas review?
Run the comparison to see the baseline answer.
With Remembero
Question → model tool call → Datalog → bindings + proof
When should I schedule the Atlas review?
Run the comparison to execute recall, proof, and answer synthesis.
Model calls use a labeled simulator (SQLite data ready · WebLLM model not loaded); SQLite, SQL, Remembero evaluation, and proof execution are real and browser-local.
Add this loop to your agent harness →