(
path: string,
options?: {
readonly unlink?: boolean
readonly onConflict?: OnConflictResolved
}
): Layer.Layer<
| Handler<"clear">
| Identity
| Directory
| Advice
| Hyperlink.Local<Identity>
| Handler<"claim">
| Handler<"resolve">
| Hyperlink.Local<Directory>
| Handler<"advertise">
| Handler<"unregister">
| Handler<"nodesServing">
| Hyperlink.Local<Advice>
| Handler<"advise">
| Handler<"preferred">,
never,
never
>export const const layerIpc: (
path: string,
options?: {
readonly unlink?: boolean
readonly onConflict?: OnConflictResolved
}
) => Layer.Layer<
| Identity
| Hyperlink.Local<Identity>
| Handler<"claim">
| Handler<"resolve">
| Directory
| Hyperlink.Local<Directory>
| Handler<"advertise">
| Handler<"unregister">
| Handler<"nodesServing">
| Advice
| Hyperlink.Local<Advice>
| Handler<"advise">
| Handler<"clear">
| Handler<"preferred">,
never,
never
>
layerIpc = (
path: stringpath: string,
options: {
readonly unlink?: boolean
readonly onConflict?: OnConflictResolved
}
options?: {
readonly unlink?: boolean | undefinedunlink?: boolean;
/** Fleet-parent conflict policy (concrete). Default `livenessReplace`. */
readonly onConflict?: OnConflictResolvedFleet-parent conflict policy (concrete). Default livenessReplace.
onConflict?: type OnConflictResolved = "livenessReplace" | "askIncumbent" | "reject"Concrete advertise conflict policy (no "inherit") — what Lookup runs.
OnConflictResolved;
},
) =>
ipcServer<readonly [Layer.Layer<Identity | Hyperlink.Local<Identity> | Handler<"claim"> | Handler<"resolve"> | Directory | Hyperlink.Local<Directory> | Handler<"advertise"> | Handler<"unregister"> | Handler<"nodesServing"> | Advice | Hyperlink.Local<Advice> | Handler<"advise"> | Handler<"clear"> | Handler<"preferred">, never, never>]>(serves: readonly [Layer.Layer<Identity | ... 12 more ... | Handler<...>, never, never>], options: IpcServerOptions): Layer.Layer<...> (+1 overload)A Unix-domain RPC server — same-machine sibling of
httpServer
/
wsServer
.
Speaks Effect's raw socket RPC protocol (RpcServer.layerProtocolSocketServer) over a
filesystem path — no HTTP, no WebSocket upgrade. Clients connect with
connectIpc
or a node whose
ProtocolKind
is "IpcSocket" (Tag()("x", { path })).
class Worker extends Tag<Worker>()("worker", { path: "/tmp/worker.sock" }) {}
const live = Hyperlink.ipcServer(
[Hyperlink.serve(Jobs, jobsImpl)],
{ path: "/tmp/worker.sock" },
)
// or Node.unix(Worker, [Hyperlink.serve(Jobs, jobsImpl)])
Auto-mounts node status/logs/ping like the http/ws servers. There is no /health HTTP route
(no HTTP listener) — probe readiness via the node-handle status RPC.
ipcServer(
[
const lookupServeLayers: (
serverOnConflict: OnConflictResolved
) => Layer.Layer<
| Identity
| Hyperlink.Local<Identity>
| Handler<"claim">
| Handler<"resolve">
| Directory
| Hyperlink.Local<Directory>
| Handler<"advertise">
| Handler<"unregister">
| Handler<"nodesServing">
| Advice
| Hyperlink.Local<Advice>
| Handler<"advise">
| Handler<"clear">
| Handler<"preferred">,
never,
never
>
Identity + Directory + Advice impl over one shared in-memory registry.
lookupServeLayers(
options: {
readonly unlink?: boolean
readonly onConflict?: OnConflictResolved
}
options?.onConflict?: OnConflictResolvedFleet-parent conflict policy (concrete). Default livenessReplace.
onConflict !== var undefinedundefined
? options: {
readonly unlink?: boolean
readonly onConflict?: OnConflictResolved
}
options.onConflict?: OnConflictResolvedFleet-parent conflict policy (concrete). Default livenessReplace.
onConflict
: "livenessReplace",
),
],
{
IpcServerOptions.path: stringFilesystem path for the Unix-domain listen socket (required).
path,
...(options: {
readonly unlink?: boolean
readonly onConflict?: OnConflictResolved
}
options?.unlink?: boolean | undefinedunlink === var undefinedundefined ? {} : { IpcServerOptions.unlink?: boolean | undefinedBest-effort unlink of path before bind and when the server scope closes
(default false — same as
Lookup.layerOptions
/ named-pipe listen).
Opt in with unlink: true to clear a stale .sock from a previous crash; leaving the
default avoids unlink-steal of a live peer's socket.
unlink: options: {
readonly unlink?: boolean
readonly onConflict?: OnConflictResolved
}
options.unlink?: booleanunlink }),
},
);