Documentación/Referencia de la UI de RPC Services
Referencia de la UI de RPC Services
Este archivo documenta el almacenamiento y la gestión de los RPC services en DBFlux.
DBFlux ahora persiste una base de RPC services de primera clase a través de
RpcServiceKind:
Driver— se adapta a drivers de base de datos en runtimeAuthProvider— se adapta a registros de auth provider en runtime, tanto en la app como en el MCP server
Storage
Los RPC services se almacenan en SQLite en ~/.local/share/dbflux/dbflux.db, no
en un archivo JSON.
Tablas:
cfg_services— registro principal del service (socket_id, service_kind, command, startup_timeout_ms, enabled)cfg_services.api_family,cfg_services.api_major,cfg_services.api_minor— metadata opcional del contrato de la API RPCcfg_service_args— argumentos de proceso ordenadoscfg_service_env— variables de entorno
Schema
-- Base table (migration 001). `service_kind` is added by migration 005 and
-- `api_family`/`api_major`/`api_minor` by migration 006; they are shown here
-- inline for reference but are not part of the base DDL.
CREATE TABLE cfg_services (
socket_id TEXT PRIMARY KEY,
enabled INTEGER DEFAULT 1,
command TEXT,
startup_timeout_ms INTEGER, -- no SQL-level default; the 5000ms
-- fallback (DEFAULT_STARTUP_TIMEOUT_MS)
-- is applied in app code
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
service_kind TEXT NOT NULL DEFAULT 'driver', -- added by migration 005
api_family TEXT, -- added by migration 006
api_major INTEGER, -- added by migration 006
api_minor INTEGER -- added by migration 006
);
CREATE TABLE cfg_service_args (
id TEXT PRIMARY KEY,
service_id TEXT NOT NULL REFERENCES cfg_services(socket_id),
position INTEGER NOT NULL,
value TEXT NOT NULL
);
CREATE TABLE cfg_service_env (
id TEXT PRIMARY KEY,
service_id TEXT NOT NULL REFERENCES cfg_services(socket_id),
key TEXT NOT NULL,
value TEXT NOT NULL
);
Gestión de Services
Los services se gestionan a través de la UI de Settings, en la sección RPC Services, no editando archivos directamente.
Para agregar o editar un service:
- Abre Settings → RPC Services
- Agrega un nuevo service o selecciona uno existente
- Elige el service kind (
DriveroAuth Provider) - Configura el socket ID, la ruta del command, arguments, environment variables, y el timeout
- Guarda los cambios
Notas:
- Los services
Driverestán activos en el runtime y conservan la identidad de driver existenterpc:<socket_id>. - Los services
Auth Providerestán activos únicamente en los registros de auth provider en runtime; nunca aparecen como drivers. - DBFlux preserva la compatibilidad de los IDs de registro de driver como
rpc:<socket_id>. - Si falta la metadata de API en una fila de driver existente, DBFlux la define
por defecto según el contrato
driver_rpcactual en la versión1.1. - Si falta la metadata de API en una fila de auth-provider, DBFlux la define por
defecto según el contrato
auth_provider_rpcactual en la versión1.2. api_family/api_majorse usan como preflight de arranque para los auth providers antes de que DBFlux sondee el socket.
Semántica
socket_idse usa literalmente como el nombre del archivo del socket- DBFlux identifica internamente cada service como
rpc:<socket_id> - DBFlux clasifica cada service por
service_kindantes de la adaptación en runtime - El nombre/icon/category/form del driver vienen de la respuesta
Hellodel service (driver_metadata,form_definition), no de la configuración - Los services con
service_kind='driver'que fallan al completar el handshake RPC (Hello) durante el arranque no se registran - Los services con
service_kind='auth_provider'se cargan en los registros de auth provider cuando pasan los chequeos de compatibilidad y sondean exitosamente - La negociación del driver-path selecciona la minor version compatible
mutuamente soportada más alta durante
Hello, y luego requiere que cada envelope posterior use exactamente esa versión negociada - La negociación de auth-provider sigue el mismo esquema family/major/minor bajo
auth_provider_rpc; las family o major versions incompatibles se omiten antes del registro
Campos
socket_id(requerido): nombre de socket local usado por DBFlux y el service.- Caracteres permitidos: letras ASCII, números,
.,_,- - Los separadores de ruta, espacios, y otra puntuación se rechazan.
- El valor se pasa tal cual al namespace de socket de la plataforma, así que mantenlo corto y estable.
- Caracteres permitidos: letras ASCII, números,
command(opcional): ejecutable a correr cuando DBFlux necesita arrancar el service.- Si se omite y
argstambién está vacío, DBFlux trata el service como ya corriendo y no lanza nada. - Para
driver, si se omite yargsno está vacío, DBFlux lanzadbflux-driver-host. - Para
auth_provider, si DBFlux debe lanzar el service,commanddebe fijarse explícitamente.
- Si se omite y
args(opcional): argumentos del proceso.env(opcional): variables de entorno para el proceso lanzado.startup_timeout_ms(opcional): tiempo máximo de espera para que el socket esté listo después del spawn.- Default:
5000
- Default:
Errores Comunes
- Nombres de socket desalineados entre la configuración del service y los args del service
- Ruta relativa de
commandque no se resuelve bajo el entorno del proceso de DBFlux - Editar la base de datos directamente en lugar de a través de la UI de Settings
- El service no implementa los campos requeridos de
Hellopara la versión actual del protocolo RPC - Omitir
commandmientras se proveenargsparciales; si quieres que DBFlux lance el host por defecto,argsdebe incluir tanto--drivercomo--socket. - Configurar un service de auth-provider con
argspero sincommand; DBFlux rechazará ese launch config en lugar de asumir el driver host