feat(local): serverless local execution runtime (opensop-local)#59
Closed
Chosen9115 wants to merge 1 commit into
Closed
feat(local): serverless local execution runtime (opensop-local)#59Chosen9115 wants to merge 1 commit into
Chosen9115 wants to merge 1 commit into
Conversation
Run an OpenSOP process on-machine with no server (no Rails, no daemon, no network) — just bash + jq. Reads a process definition, runs steps in order, threads a JSON context between them, and writes an append-only on-disk receipt per step. Lets you run processes with just the CLI (dev, CI, air-gapped, and lightweight agents that can't carry a Ruby runtime). Includes: the runtime (automated/shell/noop step types), JSON process format, on-disk receipts (manifest/audit.jsonl/context), a YAML->JSON converter, a worked example, and a golden test (passing). Battle-tested driving a real lightweight agent's daily procedures. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Owner
Author
|
Moving this to the opensop-cli repo — it's a CLI runtime and belongs there. New PR to follow in Chosen9115/opensop-cli. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Serverless local execution for OpenSOP (
opensop-local)Adds a local runtime: run an OpenSOP process on-machine with no server — no Rails app, no daemon, no network. Reads a process definition, runs its steps in order, threads a JSON context between them, and writes an append-only on-disk receipt per step.
Why: today a process runs on the Rails runtime, and
opensop-cliis a thin HTTP client to that server. This lets you run the same kind of process with just the CLI — for development, CI, air-gapped/edge environments, and lightweight agents that can't carry a Ruby runtime.Dependencies:
bash+jq. (Optionalyq/PyYAML for.sop.yaml→ JSON.)What's in this PR (
local/)bin/opensop-local— the runtime:run/list/runs/show/import-yaml.examples/greet.sop.json+examples/steps/build.sh— a minimal worked example.test/test.sh— golden test (passing): asserts 2 steps run, context threads, receipts are written, and no step-output leak.README.md— format, the step I/O contract, step-type matrix, audit format, design notes.Model
.sop.json(jq-native, zero extra deps), mirroringSPEC.md.import-yamlconverts.sop.yaml.$OSL_CONTEXT; its JSON stdout merges back under the step id (non-JSON →{stdout: …}).automated,shell,noop✅ today.form/approval/llm/webhook/subprocess/waitare the roadmap for full SPEC parity (see README table).$OPENSOP_LOCAL_HOME/runs/<id>/{manifest.json, audit.jsonl, context.json}— the local equivalent of the DB receipts, fully inspectable.Notes for review
local/; nothing else in the repo is touched.from:expression resolution (exact server parity) and local-awareruns/show/statusinopensop-cliare noted as follow-ups.Draft, for review — please don't merge yet. @kuri — would love your eyes on the format/IO-contract and where this should live long-term (here vs
opensop-cli).🤖 Generated with Claude Code