Validate before launch
Reject unknown capabilities, invalid limits, unsupported API versions, and unsafe entry paths.
accepted / rejectedγ Corvi, “the wing”
Gienah gives Ruby applications a small plugin boundary: child processes, framed RPC, explicit activation, capability checks, and bounded failure.
Plugin process
pid 9134Capabilitygate
Ruby host
api version 1Gienah keeps the host’s application model private. Plugins receive protocol messages, not Ruby objects, and every host method can require a declared capability.
Reject unknown capabilities, invalid limits, unsupported API versions, and unsafe entry paths.
accepted / rejectedDiscover plugins up front, then create a process only when its activation pattern matches.
inactive / readyDeny undeclared methods at the gate; bound message size, request time, and concurrent work.
allow / denyBack off after crashes and disable a plugin when repeated failures exhaust the restart window.
restart / disableRegister application-specific methods, discover manifests, and activate a plugin only when its reason occurs.
View on RubyGems$ bundle add gienah
require "gienah"
host = Gienah::Host.new(api_version: 1)
host.expose("workspace/notify") { |params|
puts params.fetch("message")
}
host.discover(["plugins"])
plugin = host.activate("example", reason: "onStartup")
plugin&.call("refresh", {}).await(timeout: 2)