xyncra-server

module
v0.0.0-...-fd33c92 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 24, 2026 License: MIT

README ΒΆ

Xyncra Server

A distributed messaging backend with built-in AI agent support.

Bidirectional RPC over WebSocket Β· Multi-device sync Β· Offline resilience Β· Streaming Β· Human-in-the-Loop

Architecture Β· Quick Start Β· Protocol Β· Agent System Β· Documentation Β· Contributing Β· License


Why Xyncra?

Most messaging systems force you to choose between real-time infrastructure and AI agent integration. Xyncra gives you both in a single, zero-config server:

You need... Xyncra delivers
Real-time messaging WebSocket-based bidirectional RPC with server-initiated pushes
AI agents that talk to users Built-in agent runtime with streaming, tool calls, and HITL
Multi-device everywhere Per-device connection tracking with offline sync and gap filling
Production resilience Redis-backed distributed state, MQ task queue, fail-open design
Zero operational overhead SQLite by default, one binary, sensible defaults for everything

Architecture

                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                        β”‚         Your Application        β”‚
                        β”‚   (reverse proxy + auth layer)  β”‚
                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                       β”‚  injects user_id
                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                        β”‚         Xyncra Server           β”‚
                        β”‚                                 β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”  WebSocketβ”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”
    β”‚ User A│◄─────────►│  β”‚  Conn     β”‚  β”‚  Agent    β”‚  │◄─►│ Redis β”‚
    β”‚ Deviceβ”‚  RPC+Push β”‚  β”‚  Store    β”‚  β”‚  Runtime  β”‚  β”‚   β””β”€β”€β”€β”¬β”€β”€β”€β”˜
    β””β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β”‚       β”‚
                        β”‚        β”‚               β”‚        β”‚   β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”  WebSocketβ”‚  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”  β”‚   β”‚  MQ   β”‚
    β”‚ User B│◄─────────►│  β”‚  Handler  β”‚  β”‚  Tool     β”‚  β”‚   β”‚(Asynq)β”‚
    β”‚Device1β”‚  RPC+Push β”‚  β”‚  Registry β”‚  β”‚  Provider β”‚  β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”˜
    β””β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                        β”‚        β”‚                        β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”  WebSocketβ”‚  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
    β”‚ User B│◄─────────►│  β”‚        Store Layer        β”‚  β”‚
    β”‚Device2β”‚  RPC+Push β”‚  β”‚  (SQLite/PostgreSQL/MySQL)β”‚  β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Three layers, one binary:

  • Connection Layer β€” WebSocket server with per-(user, device) connection tracking, Redis Pub/Sub for cross-node broadcasting, and device replacement protocol
  • Messaging Layer β€” Bidirectional RPC (client↔server), persistent update sync with sequence-based gap filling, ephemeral pushes for typing/streaming/presence
  • Agent Layer β€” YAML-configured AI agents with multi-LLM support (OpenAI, Claude, Ollama, Qwen), MCP tool integration, client-side tool invocation via ReverseRPC, sub-agent delegation, and human-in-the-loop checkpoints

Features

πŸ’¬ Messaging Core
  • Bidirectional RPC β€” Both client and server can initiate calls over a single WebSocket connection
  • Persistent updates β€” Sequence-numbered update log with cursor-based pagination (sync_updates)
  • Offline resilience β€” Clients reconnect and fetch missed updates; gap placeholders ensure no silent data loss
  • Multi-device sync β€” Per-device connection tracking (user_id + device_id + conn_id)
  • Soft delete β€” Conversations and messages support delete/restore with cascade semantics
πŸ€– AI Agent Runtime
  • Declarative agents β€” Define agents in a single Markdown file with YAML front matter (model, tools, middleware, system prompt)
  • Multi-LLM β€” Pluggable providers: OpenAI, Anthropic Claude, Ollama, Qwen β€” or bring your own
  • Streaming responses β€” Real-time text streaming via ephemeral push (stream_text), cumulative snapshot model
  • Tool execution β€” Server-side tools (code, search) + client-side tools (ReverseRPC to device) + MCP server integration
  • Human-in-the-Loop β€” Agents pause and ask users for confirmation via ask_user; questions persist to database, multi-device sync via pull-notification pattern (conversation update as lightweight signal), idempotent agent_resume with 409 conflict detection, and crash recovery (answers in DB, checkpoints in Redis with 24h TTL, stale conversation cleanup)
  • Sub-agent delegation β€” Agents can invoke other agents, each with isolated context
  • Context management β€” Token-aware truncation with optional summarization middleware
πŸ—οΈ Infrastructure
  • Zero-config startup β€” SQLite + Redis localhost defaults, one command to run
  • Flexible storage β€” SQLite (embedded), PostgreSQL, or MySQL via GORM
  • Distributed-ready β€” Redis Pub/Sub for cross-node push, Asynq for async task queue with priority levels
  • Fail-open design β€” MQ enqueue failures don't block message persistence; Redis outages don't crash agents
  • Ephemeral events β€” Typing indicators, streaming text, agent status β€” never persisted, never replayed, always real-time
πŸ”­ Observability

All features are opt-in via environment variables (zero overhead when disabled):

  • Structured logging β€” slog-based structured logging with JSON/text format and automatic log rotation (lumberjack)
  • Prometheus metrics β€” 36 metrics covering system, connections, messages, agents, business operations, and Redis health
  • Performance profiling β€” pprof HTTP server (localhost-only) and Pyroscope continuous profiling integration
  • Docker Compose stack β€” Complete observability profile with Prometheus, AlertManager, Loki, Promtail, Pyroscope, and Grafana
  • Alert rules β€” 11 pre-defined alerts for goroutine leaks, connection storms, LLM errors, Redis failures, and queue backlogs

Quick Start

Prerequisites
  • Go 1.26+
  • Redis running on localhost:6379 (default)
Build & Run
# Clone
git clone https://github.com/PineappleBond/xyncra-server.git
cd xyncra-server

# Build
make build

# Start server (zero-config: SQLite + Redis localhost:6379)
./bin/xyncra-server

That's it. The server is listening on :8080.

Docker
docker compose -f deploy/docker-compose.yml up -d
Configuration

Override defaults via CLI flags or XYNCRA_ environment variables:

Flag Env Var Default Description
-addr XYNCRA_ADDR :8080 WebSocket listen address
-redis-addr XYNCRA_REDIS_ADDR localhost:6379 Redis address
-redis-password XYNCRA_REDIS_PASSWORD Redis AUTH password
-db-driver XYNCRA_DB_DRIVER sqlite sqlite / postgres / mysql
-db-dsn XYNCRA_DB_DSN xyncra.db Database connection string
-max-conns XYNCRA_MAX_CONNS_PER_USER 0 (unlimited) Max connections per user
-redis-db XYNCRA_REDIS_DB 0 Redis database number
-agents-dir XYNCRA_AGENTS_DIR agents Path to agent definitions directory
-max-functions-per-device XYNCRA_MAX_FUNCTIONS_PER_DEVICE 200 Max registered functions per device

Client CLI

Xyncra includes a full-featured CLI client (xyncra-client) for interacting with the server.

# Start the daemon (maintains persistent WebSocket connection)
./bin/xyncra-client listen --user-id alice --device-id laptop

# Create a conversation
./bin/xyncra-client create-conversation --peer-id bob

# Send a message
./bin/xyncra-client send --conversation-id <conv-id> --content "Hello!"

# Query local data (offline-capable, reads from local SQLite)
./bin/xyncra-client list-conversations
./bin/xyncra-client get-messages --conversation-id <conv-id>
./bin/xyncra-client search-messages --conversation-id <conv-id> --query "hello"

The daemon auto-registers built-in functions (ping, get_device_info, get_time) that agents can invoke via ReverseRPC. Custom device metadata can be attached via --device-info.


Protocol

All communication uses a 3-level envelope over WebSocket:

// Client β†’ Server (Request, type=0)
{"type": 0, "data": {"id": "req-1", "method": "send_message", "params": {...}}}

// Server β†’ Client (Response, type=1)
{"type": 1, "data": {"id": "req-1", "code": 0, "msg": "ok", "data": {...}}}

// Server β†’ Client (Push Updates, type=2)
{"type": 2, "data": {"updates": [{"seq": 1, "type": "message", "payload": {...}}]}}
RPC Methods
Method Description
heartbeat Keep-alive, refreshes connection TTL
send_message Send a message (idempotent via client_message_id)
sync_updates Cursor-based update sync with gap filling
create_conversation Find-or-create 1-on-1 conversation
get_conversation Get a single conversation with unread count and HITL questions
list_conversations List conversations (ordered by last_message_at DESC)
get_messages Paginated message history
search_messages Text search (LIKE-based) within a conversation
mark_as_read Update read cursor (MAX semantics)
delete_conversation Soft-delete conversation + messages
restore_conversation Restore soft-deleted conversation
delete_message Soft-delete message (sender only)
set_typing Ephemeral typing indicator (Seq=0)
stream_text Ephemeral streaming text (Seq=0, cumulative snapshot)
agent_resume Resume a HITL-interrupted agent
reload_agents Hot-reload agent configurations
system.register_functions Register device function capabilities (ReverseRPC)
system.reconnect Reconnect handshake with request replay
Push Update Types

Persisted (Seq > 0, delivered via sync_updates):

Type Description
message New message
delete_message Message deleted
mark_read Read cursor updated
conversation Conversation state changed (incl. HITL)
gap Synthetic gap filler (runtime only)

Ephemeral (Seq = 0, real-time only, never replayed):

Type Description
typing User typing indicator
streaming Cumulative text stream from agent
agent_status Agent state: thinking / tool_calling / generating / idle / asking_user
agent_timeout Agent timed out

πŸ“– Full protocol specification: docs/API.md


Agent System

Agents are defined as single Markdown files with YAML front matter β€” no code required.

Example: Weather Bot
---
id: weather-bot
name: Weather Bot
model: qwen3.7-plus
api_key_env: DASHSCOPE_API_KEY
tools:
  - get_weather
  - get_current_time
middleware:
  enable_client_tools: true
  enable_summarization: true
---

You are a helpful weather assistant. Provide current weather
information, forecasts, and weather-related advice.

Drop this file in the agents/ directory and hot-reload with reload_agents RPC.

Agent Capabilities
Feature Description
Multi-LLM OpenAI, Claude, Ollama, Qwen β€” pluggable LLMProvider interface
Tool calling Server-side tools, client-side tools (ReverseRPC), MCP servers
Streaming Real-time text streaming with cumulative snapshot model
HITL Persistent questions with multi-device sync, offline resilience, crash recovery via checkpoint + DB
Sub-agents Delegate to other agents with isolated contexts
Middleware Client tools, tool-call patching, summarization, tool result reduction
Context management Token-aware truncation, message count fallback, configurable limits
Agent Interaction Flow
User                 Server              Agent              LLM
 β”‚  send_message      β”‚                    β”‚                  β”‚
 │───────────────────►│  enqueue MQ task   β”‚                  β”‚
 β”‚                    │───────────────────►│  prompt + context β”‚
 β”‚                    β”‚                    │─────────────────►│
 β”‚  typing (Seq=0)    │◄─── ephemeral ────│                  β”‚
 │◄───────────────────│                    β”‚  tool calls       β”‚
 β”‚  agent_status      β”‚                    │─────────────────►│
 │◄───────────────────│◄─── ephemeral ────│                  β”‚
 β”‚  streaming (Seq=0) β”‚                    β”‚  response         β”‚
 │◄───────────────────│◄───────────────────│◄─────────────────│
 β”‚  message (Seq=N)   β”‚                    β”‚                  β”‚
 │◄───────────────────│◄── persisted ──────│                  β”‚
HITL Resilience

The agent runtime implements a conversation state machine with 6 defined states (idle, thinking, tool_calling, generating, asking_user, timeout). Only asking_user and idle are persisted to the database β€” intermediate states (thinking, tool_calling, generating) are ephemeral WebSocket broadcasts for UI display only:

                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚  Conversation State Machine                  β”‚
                 β”‚                                              β”‚
                 β”‚  Ephemeral (broadcast only, not persisted):  β”‚
                 β”‚  thinking β†’ tool_calling β†’ generating        β”‚
                 β”‚                                              β”‚
                 β”‚  Persisted (database):                       β”‚
 idle ──────────────────────────────────────────► asking_user   β”‚
                                                   β”‚            β”‚
                                                   β”‚ resume     β”‚
                                                   β”‚ (all       β”‚
                                                   β”‚  answered) β”‚
                                                   β—„β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 timeout (background cleanup resets to idle)

Pull-notification pattern β€” When an agent pauses for HITL:

  1. Questions are persisted to the Question table (DB)
  2. Conversation agent_status transitions to asking_user
  3. A lightweight conversation update is broadcast (just conversation_id + updated_at)
  4. Clients pull the full conversation state β€” questions, status, checkpoint β€” on demand
  5. Ephemeral agent_status pushes are also sent for online clients
  6. CLI daemon's OnConversation handler detects agent_status == "asking_user" and displays HITL info as [hitl] format (checkpoint_id, interrupt_id, question_text)

Crash recovery β€” Answers live in DB, checkpoints in Redis (24h TTL). Server restarts during HITL wait are safe: the user can still answer, and the resume handler reads answers from DB to rebuild the targets map.

Idempotency β€” agent_resume uses UPDATE ... WHERE status='pending' for atomic answer claiming. If another device already answered, returns 409 (question_already_answered). Multi-question checkpoints track partial progress β€” resume only fires when ALL questions are answered.

Stale cleanup β€” A background task (Redis distributed lock per conversation) detects conversations stuck in asking_user past a configurable threshold, resets them to idle, and cleans up pending questions.

πŸ“– Full scenario analysis: docs/design/DESIGN_HITL_RESILIENCE.md

πŸ“– Agent configuration details: docs/decisions/PRODUCT_DECISIONS.md (D-054 through D-124) and docs/decisions/PRODUCT_DECISIONS_DETAILS.md


Deployment Model

Xyncra is designed for internal network deployment behind a reverse proxy:

         Internet
            β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
     β”‚   Nginx /   β”‚  ← TLS termination, CORS, Rate Limit
     β”‚   Envoy     β”‚
     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
            β”‚ Internal Network
     β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
     β”‚   Your App  β”‚  ← Authentication, business logic
     β”‚   Server    β”‚     Injects authenticated user_id
     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
            β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
     β”‚   Xyncra    β”‚  ← Messaging + Agents
     β”‚   Server    β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

What Xyncra intentionally does NOT include:

  • ❌ Authentication β€” handled by your app server via reverse proxy
  • ❌ TLS termination β€” handled by your reverse proxy
  • ❌ CORS / Rate Limiting β€” handled by your reverse proxy
  • ❌ CSRF protection β€” not needed in internal deployment

What you get out of the box:

  • βœ… user_id query parameter auth (dev default, override via WSWithAuthenticate)
  • βœ… Accepts any Origin (internal deployment model)
  • βœ… Functional options for all configuration overrides

πŸ“– Design rationale: docs/decisions/PRODUCT_DECISIONS.md (D-001 through D-005)


Project Structure

xyncra-server/
β”œβ”€β”€ cmd/
β”‚   β”œβ”€β”€ xyncra-server/        # Server entry point
β”‚   └── xyncra-client/        # CLI client entry point
β”œβ”€β”€ agents/                   # Agent definitions (Markdown with YAML front matter)
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ server/               # WebSocket server, connection lifecycle
β”‚   β”œβ”€β”€ handler/              # RPC method handlers
β”‚   β”œβ”€β”€ agent/                # Agent runtime, executor, tool providers
β”‚   β”‚   └── tools/            # Built-in tool implementations
β”‚   β”œβ”€β”€ cli/                  # CLI client implementation (commands, output)
β”‚   β”œβ”€β”€ mq/                   # Message queue (Asynq/Redis)
β”‚   β”œβ”€β”€ store/                # Persistence layer (GORM)
β”‚   β”‚   └── model/            # Data models
β”‚   β”œβ”€β”€ cleanup/              # Expired update cleanup
β”‚   └── e2e/                  # End-to-end integration tests
β”œβ”€β”€ pkg/
β”‚   β”œβ”€β”€ protocol/             # Wire protocol types (importable)
β”‚   β”œβ”€β”€ client/               # Go client SDK
β”‚   └── store/                # Client-side local storage (SQLite via GORM)
β”‚       └── model/            # Client data models
β”œβ”€β”€ scripts/                  # Shell scripts
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ API.md                    # WebSocket protocol reference
β”‚   β”œβ”€β”€ decisions/
β”‚   β”‚   β”œβ”€β”€ PRODUCT_DECISIONS.md      # Architecture decisions
β”‚   β”‚   └── PRODUCT_DECISIONS_DETAILS.md # Detailed decision specs
β”‚   β”œβ”€β”€ design/
β”‚   β”‚   β”œβ”€β”€ DESIGN_HITL_RESILIENCE.md  # HITL failure scenarios & recovery
β”‚   β”‚   β”œβ”€β”€ DESIGN_CLIENT_FUNCTION_AGENT_TOOLS.md # Client function agent tools design
β”‚   β”‚   └── DESIGN_TYPING_EPHEMERAL_PUSH.md # Typing/ephemeral push design
β”‚   β”œβ”€β”€ guides/
β”‚   β”‚   β”œβ”€β”€ DEVELOPER_GUIDE.md        # Developer onboarding guide
β”‚   β”‚   └── DEVELOPER_REFERENCE.md    # Developer reference
β”‚   β”œβ”€β”€ reviews/
β”‚   β”‚   β”œβ”€β”€ CLIENT_REVIEW.md          # Client code review report
β”‚   β”‚   └── REVIEW_CLIENT_QUERY_ARCHITECTURE.md # Client query architecture review
β”‚   β”œβ”€β”€ CLI_E2E_TEST_STRATEGY.md       # CLI E2E test strategy
β”‚   β”œβ”€β”€ CLI_E2E_TEST_STRATEGY_ROUND2.md # CLI E2E test strategy round 2
β”‚   β”œβ”€β”€ IMPLEMENTATION_PHASES.md      # Implementation phases
β”‚   β”œβ”€β”€ manual-test-cases/            # Manual test case documents
β”‚   β”œβ”€β”€ plans/                        # Design plans
β”‚   β”œβ”€β”€ testing/                      # Test documents & reports
β”‚   └── superpowers/                  # AI-generated specs
β”œβ”€β”€ deploy/                           # Docker & deployment configurations
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ docker-compose.yml
β”‚   β”œβ”€β”€ docker-compose.e2e.yml        # E2E test environment
β”‚   β”œβ”€β”€ docker-compose.multi-node.yml # Multi-node distributed test
β”‚   β”œβ”€β”€ alertmanager/                 # AlertManager config
β”‚   β”œβ”€β”€ grafana/                      # Grafana dashboards & provisioning
β”‚   β”œβ”€β”€ loki/                         # Loki config
β”‚   β”œβ”€β”€ prometheus/                   # Prometheus rules & config
β”‚   └── promtail/                     # Promtail config
└── wiki/                             # Project wiki

Development

# Unit tests (no Redis required)
make test

# E2E tests (Redis on port 16379 required)
make test-e2e

# All tests
make test-all

# Format & lint
make fmt
make vet

Documentation

Document Description
API Reference Complete WebSocket protocol specification
Product Decisions Architecture decisions (D-001 to D-128)
Product Decisions Details Detailed decision specifications
Developer Guide Project structure, coding conventions, how-to guides
Developer Reference Developer reference documentation
HITL Resilience Design HITL failure scenarios, recovery matrix, data model
Manual Test Cases End-to-end manual test scenarios (in Chinese)
Package Docs Per-package design documents (in Chinese)

Contributing

Contributions are welcome! Here's how to get started:

  1. Report bugs β€” Open an issue with reproduction steps
  2. Suggest features β€” Open an issue describing your use case
  3. Submit PRs β€” Fork, branch, implement, test, submit

When contributing code:

  • Follow existing patterns and naming conventions (see Developer Guide)
  • Reference product decision IDs in comments (e.g., D-011)
  • Write tests β€” handler tests use in-memory stores, E2E tests require Redis
  • Use fmt.Errorf("context: %w", err) for error wrapping

License

MIT β€” Copyright (c) 2026 PineappleBond

Directories ΒΆ

Path Synopsis
cmd
xyncra-client command
xyncra-server command
Command xyncra-server is the entry point for the Xyncra WebSocket server.
Command xyncra-server is the entry point for the Xyncra WebSocket server.
internal
agent
CheckPointStore implements Eino's compose.CheckpointStore using Redis (D-083).
CheckPointStore implements Eino's compose.CheckpointStore using Redis (D-083).
agent/tools
Package tools provides a factory-pattern tool registry and built-in tool implementations for the Xyncra Agent system.
Package tools provides a factory-pattern tool registry and built-in tool implementations for the Xyncra Agent system.
cleanup
Package cleanup provides background maintenance tasks for the Xyncra server.
Package cleanup provides background maintenance tasks for the Xyncra server.
cli
cli/output
Package output provides formatted console output utilities for the Xyncra CLI.
Package output provides formatted console output utilities for the Xyncra CLI.
handler
agent_resume RPC handler β€” RemoteCalling unified model (D-137 / D-138).
agent_resume RPC handler β€” RemoteCalling unified model (D-137 / D-138).
logger
Package logger provides structured logging for Xyncra Server, built on top of the standard library log/slog package.
Package logger provides structured logging for Xyncra Server, built on top of the standard library log/slog package.
metrics
Package metrics provides Prometheus metrics collection for the Xyncra server.
Package metrics provides Prometheus metrics collection for the Xyncra server.
mq
Package mq provides the message queue abstraction layer for the Xyncra messaging system.
Package mq provides the message queue abstraction layer for the Xyncra messaging system.
profiling
Package profiling provides performance profiling capabilities for Xyncra Server.
Package profiling provides performance profiling capabilities for Xyncra Server.
server
Package server provides the network server layer for the Xyncra messaging system.
Package server provides the network server layer for the Xyncra messaging system.
store
Package store provides the data access layer for the Xyncra messaging system.
Package store provides the data access layer for the Xyncra messaging system.
tracing
Package tracing provides OpenTelemetry distributed tracing for Xyncra Server.
Package tracing provides OpenTelemetry distributed tracing for Xyncra Server.
pkg
client
Package client implements the Xyncra client communication layer, providing a high-level API for connecting to a Xyncra server over WebSocket and synchronizing conversational data.
Package client implements the Xyncra client communication layer, providing a high-level API for connecting to a Xyncra server over WebSocket and synchronizing conversational data.
store
Package store provides the client-side data access layer for the Xyncra messaging system, backed by SQLite via GORM.
Package store provides the client-side data access layer for the Xyncra messaging system, backed by SQLite via GORM.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL