I remember,
therefore I am.

The assistant that never forgets, and never leaves your server.

Self-hosted · on Telegram · near-zero cost · Apache 2.0
$ git clone https://github.com/riyogarta/syne.git && cd syne && bash install.sh
chat with Syne · via Telegramconnected
From now on keep answers short and skip the pleasantries.
Done. I'll keep it brief from here on.
And remember my deploys go out on Fridays.
Noted. Fridays are deploy days, I won't forget.
rule  → "concise, no pleasantries"
memory→ "deploys ship on Fridays"
saved to your database · no config file · no restart

Every other assistant forgets you when the context fills up, resets between sessions, and runs on someone else's servers.

Why people keep it running

Three reasons, not twenty features.

01

It remembers.

Semantic recall across sessions, people, and years. Nothing is capped, nothing expires. Stop repeating yourself to your tools.

millions of memories · useful ones stay, unused ones fade
02

It's yours.

Runs entirely on your own server, stored in your own PostgreSQL. Your memories never touch a third party unless you choose them to.

Telegram + terminal · same agent, same memory
03

It's near-zero cost.

Memory and evaluation run locally on Ollama for free. Chat can run on free OAuth, or a paid API key when you want the resilience.

free memory floor · your call on the chat model
No config files

You don't edit Syne. You talk to it.

No SOUL.md, no AGENTS.md, no YAML, no redeploy. Identity, personality, rules, and config all live in PostgreSQL, and you change them mid-conversation.

you →"Be more casual and witty."
you →"Add a rule: never share my location."
you →"Change your name to Atlas."
→ each takes effect immediately. no file touched, no restart.
The surface is simple. Underneath, it goes deep.keep scrolling ↓
Layer 01 · How memory works

Two ways to remember. One clean store.

Memory isn't a chat log stuffed back into the prompt. It's a first-class store you search by meaning and traverse by relationship, backed by PostgreSQL + pgvector, and kept clean by a filter that runs the moment a fact is saved.

semantic

Vector recall

Every memory is embedded and searched by meaning, so "what do you know about my work?" finds the right notes even when you never used those words. Millions of memories, millisecond lookup.

relational

Knowledge graph

Facts are parsed into entities and relationships you can traverse, so "who is Agha's mother?" resolves a structured answer, not a fuzzy guess. Two systems, one memory.

01A 3-layer filter decides what's worth storing at write time: quick rules, a small local evaluator, then similarity dedup. Only user-confirmed facts, never the model's own guesses.
02Similarity picks insert · update · skip, so memory never fills with near-duplicates.
03Non-permanent memories decay with disuse and gain durability each time they're recalled. Explicit "remember this" facts never decay.

This filter guards what enters your memory, not what Syne says while chatting. It keeps stray guesses out of long-term storage, so your memory stays trustworthy over years. Answers in conversation are still the model's, review them like you would any assistant's.

Memory can hold files, too.

Attach a PDF, image, or voice note (up to 50 MB) to a memory. Syne embeds the description for recall and keeps the original, ready to hand back or re-read on demand, even months later.

you: [kontrak.pdf] save this, it's my 2026 lease 📎
syne: Stored, memory #42 with attachment.
— three months later —
you: when does the lease start? check the file
syne: Per the PDF: starts 1 Jan 2026, ends 31 Dec.

Memory is shared across your people, and private by default. You can open a single category to the public, say a shared Quran and Hadith corpus anyone may query, while everything else stays for you and family only.

Layer 02 · What it can do

26 core tools. 7 bundled abilities.

A working assistant out of the box, plus optional extensions you enable only when you need them.

memory — store · recall · graph · files web — search & fetch shell — guarded host access files — read & write db_query — read-only SQL schedule — cron tasks send — messages · files · voice subagent — background work config · soul — change behaviour by talking

Bundled abilities

opt-in · each ability auto-installs its own dependencies

pdf · office

Read and create PDF, Word, Excel, PowerPoint. Uploads auto-extract to text, no tool call needed.

image_gen

Generate images from text (FLUX.1, Imagen, or DALL-E).

image_analysis

Describe and OCR images, including scanned pages.

maps

Places, directions, and geocoding via Google Maps.

website_screenshot

Capture a live screenshot of any page.

whatsapp

Bridge messages to and from WhatsApp.

It can write its own abilities

Ask it to, and Syne will write, validate, and register a new ability at runtime, no restart. It can only ever touch its own abilities/custom/ directory; the core engine is off-limits, and self-modification is off by default. If it finds a bug in itself, it drafts a GitHub issue for you to post.

Layer 03 · Built to resist injection

An agent with shell access, that a web page can't hijack.

Syne can run commands on your host. So it treats prompt injection as a real threat, with two layers that don't rely on the model behaving.

consent gate

Per-action Yes / No

Destructive tools pause and ask for confirmation on Telegram. A clean command from you runs; a turn that touched a web page, an upload, or an image re-arms the gate. Content injected from that page cannot press a Telegram button, so it cannot approve itself.

shell guard

Deterministic parser

Every shell command, from the model, a sub-agent, or an ability, routes through one chokepoint and gets a verdict before any process is spawned. Pure, standalone, and exhaustively testable.

ALLOW
Allowlisted, inert command with no danger signal. Runs directly.
HARD_DENY
A forbidden pattern, an unknown binary, or a parse failure. Never runs, not even the owner can approve it.
fail-closed — any doubt resolves to deny default-deny — unknown binaries never run denylist first — forbidden patterns can't be laundered sub-agents gated too — no headless bypass

The parser is a defense, not a magic barrier. It makes injection operationally hard, but you still review what you approve, especially on production systems. Honest by design.

Layer 04 · Models & reach

Any model. Anywhere. In parallel.

Seven drivers, switchable mid-conversation with no redeploy. Run free on OAuth or local Ollama, or bring a paid key for resilience.

GeminiClaudeChatGPTOpenAITogether AIVertexOllama · local

Reach it however you like, all sharing one memory:

Telegram — chat from anywhere CLI — terminal chat, resumes per-directory Nodes — pair a laptop over WebSocket, one shared mind Sub-agents — spawn background workers for parallel tasks

Remote nodes pair from Telegram with a one-time token, auto-reconnect with backoff, and resume when your laptop wakes from sleep. Sub-agents run in isolated sessions with shared memory, but cannot spawn other sub-agents or touch config and management tools.

Layer 05 · Who can do what

A Linux-inspired permission model.

Every tool and ability declares its own 3-digit octal permission, the same idea as file permissions. The first person to message Syne becomes the owner.

7

Owner

You. Full access to everything.

5

Family

Trusted people. Only what you allow.

0

Public

Strangers. Safe read-only tools only.

Blocked

Denied users. No access at all.

a stranger tries their luck
stranger: What do you know about your owner's family? syne: I can't share that. That's private information.

Everything, personality, memory, config, and identity, lives in one PostgreSQL database (18 tables). Open source under Apache 2.0: read it, fork it, run it.

Layer 06 · Install & operate

Three commands. Fully guided from there.

Runs on a 2 GB Linux box, or on Windows through WSL2. The installer detects your CPU and RAM to pick the right local models, sets up PostgreSQL via Docker, wires your Telegram bot, and installs the service.

your-server ~ zsh
$ git clone https://github.com/riyogarta/syne.git $ cd syne && bash install.sh → choose provider (OAuth free / API key) → auto-detect hardware, recommend models → Docker + PostgreSQL + pgvector → Ollama + embedding + evaluator · Telegram bot · service ✓ Syne is running. Say hi on Telegram.

Setup & run

syne initinteractive setup
syne startstart the agent
syne cliterminal chat
syne statusstatus check
syne repairdiagnose & repair

Memory

syne memory search "…"semantic search
syne memory statsstatistics
syne memory add "…"add by hand
syne memory prune "…"bulk delete (with preview)

Nodes & database

syne node initpair a machine
syne backup / restoresnapshot the DB
syne db resetreset (destructive)

Updates

syne updatelatest release
syne updatedevforce pull + reinstall
Free floor: Ollama local embedding + evaluator = $0. Chat via OAuth is free; a paid API key is optional, for resilience.
Note: the embedding model is permanent, changing it later re-embeds all memories. The evaluator can change anytime.

I remember, therefore I am.

Give yourself an assistant that actually remembers.

$ git clone https://github.com/riyogarta/syne.git && cd syne && bash install.sh