Family AI assistant that runs on Claude Code and speaks Matrix
Rust
0
118 commits
updated Oct 1, 2026
Family AI assistant that runs on Claude Code and speaks Matrix. Keeps its memory and the thread of a conversation across context limits, so it always stays the same assistant.
Silta is for the adults of a family: each person uses their own Claude account, and Anthropic's consumer terms require users to be 18 or older and forbid sharing an account.
claude setup-token) or Anthropic API key.Everything in the agent's context is sent to the model provider and is retained under its terms. What reaches the context, and what stays on the VM:
siltad. Claude Code keeps the full session transcript, the memory notes and downloaded attachments unencrypted on the VM's disk.The component responsible for Matrix communications is siltad. It is the assistant's Matrix device: it logs into the assistant's account and holds end-to-end encryption keys for the rooms it joins.
User messages are delivered by siltad over a Unix socket to silta-claude, the Claude Code channel plugin that injects the messages into the session and provides MCP tools to the agent to interact with Matrix rooms.
Every Claude Code instance is run by silta-session, a session supervisor that manages the Claude Code session's lifecycle. There is one supervisor and session per person and one for the shared rooms.
Matrix clients ◀─────▶ Matrix homeserver
▲
│ Matrix client-server API, E2EE
▼
┌─ siltad ───────────────────┐
│ the assistant's Matrix │
│ device: login, keys, rooms │
└────────────────────────────┘
▲ ▲
│ └─────────────┐ Unix sockets
│ │
┌─ silta-session ┼ Alice ┐ ┌─ silta-session ┼ hub ──┐ One supervisor per
│ ┌─ Claude Code ▼─────┐ │ │ ┌─ Claude Code ▼─────┐ │ person and one for
│ │ silta-claude │ │ │ │ silta-claude │ │ the shared rooms.
│ │ channel plugin │ │ │ │ channel plugin │ │
│ └────────────────────┘ │ │ └────────────────────┘ │
│ memory, workspace │ │ memory, workspace │
└────────────────────────┘ └────────────────────────┘
One of the goals of the project is delivering interaction with the assistant without noticeable session edges. This is implemented using three layers:
handoff.md note about work in progress.This allows the assistant to continue from the point where it was before the compaction, fetching additional facts from memory as it needs them.
Used daily by the author, his family, and friends since 7 September 2026. Built with Claude Code and the assistant itself. Expect things to break (and get fixed). Please report bugs and propose features in issues, and ask questions in Discussions.
The Claude Code version tested to work is 2.1.283. Newer versions may break the integration: check them first with silta-contract-check (see Updating Claude Code: Installing an untested version) before using them with real sessions.
Monitor task blocks the graceful stop, so the supervisor waits out its timeout and restarts the session before compaction. Session continuity is unaffected.See docs/deployment.md.
Licensed under either the Apache License 2.0 or the MIT license, at your option (Apache-2.0 OR MIT; see LICENSE-APACHE and LICENSE-MIT).
Contributions are accepted under the same terms, without additional terms or conditions.
Rust
71.5%
Python
25.2%
Shell
3.2%
Family AI assistant that runs on Claude Code and speaks Matrix
Rust
0
118 commits
updated Oct 1, 2026
Family AI assistant that runs on Claude Code and speaks Matrix. Keeps its memory and the thread of a conversation across context limits, so it always stays the same assistant.
Silta is for the adults of a family: each person uses their own Claude account, and Anthropic's consumer terms require users to be 18 or older and forbid sharing an account.
claude setup-token) or Anthropic API key.Everything in the agent's context is sent to the model provider and is retained under its terms. What reaches the context, and what stays on the VM:
siltad. Claude Code keeps the full session transcript, the memory notes and downloaded attachments unencrypted on the VM's disk.The component responsible for Matrix communications is siltad. It is the assistant's Matrix device: it logs into the assistant's account and holds end-to-end encryption keys for the rooms it joins.
User messages are delivered by siltad over a Unix socket to silta-claude, the Claude Code channel plugin that injects the messages into the session and provides MCP tools to the agent to interact with Matrix rooms.
Every Claude Code instance is run by silta-session, a session supervisor that manages the Claude Code session's lifecycle. There is one supervisor and session per person and one for the shared rooms.
Matrix clients ◀─────▶ Matrix homeserver
▲
│ Matrix client-server API, E2EE
▼
┌─ siltad ───────────────────┐
│ the assistant's Matrix │
│ device: login, keys, rooms │
└────────────────────────────┘
▲ ▲
│ └─────────────┐ Unix sockets
│ │
┌─ silta-session ┼ Alice ┐ ┌─ silta-session ┼ hub ──┐ One supervisor per
│ ┌─ Claude Code ▼─────┐ │ │ ┌─ Claude Code ▼─────┐ │ person and one for
│ │ silta-claude │ │ │ │ silta-claude │ │ the shared rooms.
│ │ channel plugin │ │ │ │ channel plugin │ │
│ └────────────────────┘ │ │ └────────────────────┘ │
│ memory, workspace │ │ memory, workspace │
└────────────────────────┘ └────────────────────────┘
One of the goals of the project is delivering interaction with the assistant without noticeable session edges. This is implemented using three layers:
handoff.md note about work in progress.This allows the assistant to continue from the point where it was before the compaction, fetching additional facts from memory as it needs them.
Used daily by the author, his family, and friends since 7 September 2026. Built with Claude Code and the assistant itself. Expect things to break (and get fixed). Please report bugs and propose features in issues, and ask questions in Discussions.
The Claude Code version tested to work is 2.1.283. Newer versions may break the integration: check them first with silta-contract-check (see Updating Claude Code: Installing an untested version) before using them with real sessions.
Monitor task blocks the graceful stop, so the supervisor waits out its timeout and restarts the session before compaction. Session continuity is unaffected.See docs/deployment.md.
Licensed under either the Apache License 2.0 or the MIT license, at your option (Apache-2.0 OR MIT; see LICENSE-APACHE and LICENSE-MIT).
Contributions are accepted under the same terms, without additional terms or conditions.
Rust
71.5%
Python
25.2%
Shell
3.2%