Interfaces
This page lists the core interfaces in Chronos. Implement these to extend the framework with custom providers, storage backends, guardrails, hooks, and sandboxes.
model.Provider
The LLM provider interface. All model backends implement this.
Package: engine/model
type Provider interface {
Chat(ctx context.Context, req *ChatRequest) (*ChatResponse, error)
StreamChat(ctx context.Context, req *ChatRequest) (<-chan *ChatResponse, error)
Name() string
Model() string
}
| Method | Description |
|---|---|
Chat |
Send a request and receive a complete response |
StreamChat |
Return a channel of partial responses for streaming |
Name |
Human-readable provider name (e.g., “openai”) |
Model |
Default model ID (e.g., “gpt-4o”) |
Implementations: OpenAI, Anthropic, Gemini, Mistral, Ollama, AzureOpenAI, OpenAICompatible, FallbackProvider
model.EmbeddingsProvider
Provider for text embeddings, used in RAG pipelines.
Package: engine/model
type EmbeddingsProvider interface {
Embed(ctx context.Context, req *EmbeddingRequest) (*EmbeddingResponse, error)
}
Implementations: OpenAIEmbeddings, OllamaEmbeddings, CachedEmbeddings
model.TokenCounter
Estimates token counts for messages.
Package: engine/model
type TokenCounter interface {
CountTokens(messages []Message) int
CountString(s string) int
}
Implementations: EstimatingCounter (4-chars-per-token heuristic)
storage.Storage
The primary persistence interface. All storage adapters implement this (18 methods).
Package: storage
type Storage interface {
// Sessions
CreateSession(ctx context.Context, s *Session) error
GetSession(ctx context.Context, id string) (*Session, error)
UpdateSession(ctx context.Context, s *Session) error
ListSessions(ctx context.Context, agentID string, limit, offset int) ([]*Session, error)
// Memory
PutMemory(ctx context.Context, m *MemoryRecord) error
GetMemory(ctx context.Context, agentID, key string) (*MemoryRecord, error)
ListMemory(ctx context.Context, agentID string, kind string) ([]*MemoryRecord, error)
DeleteMemory(ctx context.Context, id string) error
// Audit logs
AppendAuditLog(ctx context.Context, log *AuditLog) error
ListAuditLogs(ctx context.Context, sessionID string, limit, offset int) ([]*AuditLog, error)
// Traces
InsertTrace(ctx context.Context, t *Trace) error
GetTrace(ctx context.Context, id string) (*Trace, error)
ListTraces(ctx context.Context, sessionID string) ([]*Trace, error)
// Event ledger
AppendEvent(ctx context.Context, e *Event) error
ListEvents(ctx context.Context, sessionID string, afterSeq int64) ([]*Event, error)
// Checkpoints
SaveCheckpoint(ctx context.Context, cp *Checkpoint) error
GetCheckpoint(ctx context.Context, id string) (*Checkpoint, error)
GetLatestCheckpoint(ctx context.Context, sessionID string) (*Checkpoint, error)
ListCheckpoints(ctx context.Context, sessionID string) ([]*Checkpoint, error)
// Lifecycle
Migrate(ctx context.Context) error
Close() error
}
Implementations: sqlite.Store, postgres.Store, redis.Store, mongo.Store, dynamo.Store
storage.VectorStore
Vector storage for embeddings, used by the knowledge/RAG system.
Package: storage
type VectorStore interface {
Upsert(ctx context.Context, collection string, embeddings []Embedding) error
Search(ctx context.Context, collection string, query []float32, topK int) ([]SearchResult, error)
Delete(ctx context.Context, collection string, ids []string) error
CreateCollection(ctx context.Context, name string, dimension int) error
Close() error
}
Implementations: qdrant.Store, pinecone.Store, weaviate.Store, milvus.Store, redisvector.Store
knowledge.Knowledge
The RAG knowledge base interface.
Package: sdk/knowledge
type Knowledge interface {
Load(ctx context.Context) error
Search(ctx context.Context, query string, topK int) ([]Document, error)
Close() error
}
Implementations: VectorKnowledge
guardrails.Guardrail
Input/output validation interface.
Package: engine/guardrails
type Guardrail interface {
Check(ctx context.Context, content string) Result
}
Result has fields Passed bool and Reason string.
Implementations: BlocklistGuardrail, MaxLengthGuardrail
hooks.Hook
Middleware interface for intercepting execution events.
Package: engine/hooks
type Hook interface {
Before(ctx context.Context, evt *Event) error
After(ctx context.Context, evt *Event) error
}
Implementations: LoggingHook, RetryHook, RateLimitHook, CostTracker, CacheHook, MetricsHook, Chain
sandbox.Sandbox
Isolated execution interface for running untrusted code.
Package: sandbox
type Sandbox interface {
Execute(ctx context.Context, command string, args []string, timeout time.Duration) (*Result, error)
Close() error
}
Implementations: ProcessSandbox, ContainerSandbox