Skip to content

Remote Service

A Graft remote stores repository objects, refs, SQLite snapshot data, and external payloads outside the local .graft/ directory. It enables fetch, pull, push, and clone; it does not replace SQLite transactions or provide a real-time operation log.

BackendUse it for
memoryUnit tests and short-lived fixtures.
fs://Local development, mounted storage, and end-to-end smoke tests.
s3:// or s3_compatible://Direct object-storage integration controlled by the application environment.
https://Product-facing sync with your authentication, authorization, limits, and tenant routing.

Use Remote URIs for exact syntax and credential rules.

The CLI and SDK can both configure and use remotes. Start with the workflow guide if the service or storage backend already exists.

Graft separates protocol behavior from framework and storage concerns:

PackageResponsibility
@eidos.space/graft-remoteFetch-based protocol engine, validation, and backend interfaces.
@eidos.space/graft-remote-honoHono routing adapter.
@eidos.space/graft-remote-cloudflareR2 and SQLite Durable Object backend helpers.

Your host service still owns authentication, authorization, repository naming, request limits, secrets, routing, and deployment.

Remote credentials are explicit client or adapter inputs. Do not store bearer tokens in repository config, remote URLs, logs, caches, or result payloads. Production HTTP remotes should use HTTPS and enforce repository-level access for every discovery, read, and write operation.