pathwayd: HTTP service over internal/pathway · 11/11 smoke gate
Network-callable Mem0-style trace memory at :3217, fronted by gateway
/v1/pathway/*. Closes the ADR-004 wire-up: store substrate landed in
2a6234f, this lands the HTTP surface + [pathwayd] config + acceptance
gate.
Smoke proves the architecturally distinctive properties: Revise →
History walks the predecessor chain backward (audit trail), Retire
excludes from Search default but stays Get-able, AddIdempotent bumps
replay_count without replacing — and all survive kill+restart via
JSONL log replay.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,7 @@ type Config struct {
|
||||
Queryd QuerydConfig `toml:"queryd"`
|
||||
Vectord VectordConfig `toml:"vectord"`
|
||||
Embedd EmbeddConfig `toml:"embedd"`
|
||||
Pathwayd PathwaydConfig `toml:"pathwayd"`
|
||||
S3 S3Config `toml:"s3"`
|
||||
Log LogConfig `toml:"log"`
|
||||
Auth AuthConfig `toml:"auth"`
|
||||
@@ -50,8 +51,8 @@ type IngestConfig struct {
|
||||
|
||||
// GatewayConfig adds the upstream URLs the reverse proxy fronts.
|
||||
// Each route family (/v1/storage, /v1/catalog, /v1/ingest, /v1/sql,
|
||||
// /v1/vectors, /v1/embed) has its own upstream so we can scale
|
||||
// services independently or move them to different boxes without
|
||||
// /v1/vectors, /v1/embed, /v1/pathway) has its own upstream so we can
|
||||
// scale services independently or move them to different boxes without
|
||||
// touching gateway code.
|
||||
type GatewayConfig struct {
|
||||
Bind string `toml:"bind"`
|
||||
@@ -61,6 +62,7 @@ type GatewayConfig struct {
|
||||
QuerydURL string `toml:"queryd_url"`
|
||||
VectordURL string `toml:"vectord_url"`
|
||||
EmbeddURL string `toml:"embedd_url"`
|
||||
PathwaydURL string `toml:"pathwayd_url"`
|
||||
}
|
||||
|
||||
// EmbeddConfig drives the embed service. ProviderURL points at the
|
||||
@@ -85,6 +87,15 @@ type VectordConfig struct {
|
||||
StoragedURL string `toml:"storaged_url"`
|
||||
}
|
||||
|
||||
// PathwaydConfig drives the pathway-memory service (cmd/pathwayd).
|
||||
// PersistPath: file path to the JSONL log; empty = in-memory only
|
||||
// (test/dev). Production sets a stable path under /var/lib/lakehouse
|
||||
// or similar so traces survive restart.
|
||||
type PathwaydConfig struct {
|
||||
Bind string `toml:"bind"`
|
||||
PersistPath string `toml:"persist_path"`
|
||||
}
|
||||
|
||||
// QuerydConfig adds queryd-specific knobs. queryd talks DuckDB
|
||||
// directly to MinIO via DuckDB's httpfs extension (so no storaged
|
||||
// URL needed), and reads the catalog over HTTP for view registration.
|
||||
@@ -161,6 +172,7 @@ func DefaultConfig() Config {
|
||||
QuerydURL: "http://127.0.0.1:3214",
|
||||
VectordURL: "http://127.0.0.1:3215",
|
||||
EmbeddURL: "http://127.0.0.1:3216",
|
||||
PathwaydURL: "http://127.0.0.1:3217",
|
||||
},
|
||||
Storaged: ServiceConfig{Bind: "127.0.0.1:3211"},
|
||||
Catalogd: CatalogConfig{Bind: "127.0.0.1:3212", StoragedURL: "http://127.0.0.1:3211"},
|
||||
@@ -180,6 +192,11 @@ func DefaultConfig() Config {
|
||||
DefaultModel: "nomic-embed-text",
|
||||
CacheSize: 10_000, // ~30 MiB at d=768; set to 0 to disable
|
||||
},
|
||||
Pathwayd: PathwaydConfig{
|
||||
Bind: "127.0.0.1:3217",
|
||||
// PersistPath empty by default = in-memory only. Production
|
||||
// sets to e.g. /var/lib/lakehouse/pathway/state.jsonl.
|
||||
},
|
||||
Queryd: QuerydConfig{
|
||||
Bind: "127.0.0.1:3214",
|
||||
CatalogdURL: "http://127.0.0.1:3212",
|
||||
|
||||
Reference in New Issue
Block a user