No description
  • Go 67.9%
  • JavaScript 31.6%
  • Makefile 0.3%
  • Dockerfile 0.1%
Find a file
Sebastian (Tiedtke) Huckleberry 8ea229bcc8
Some checks are pending
CI / Lint (push) Waiting to run
CI / Build and test with Go 1.26.3 on ubuntu-latest (push) Waiting to run
CI / Build and test with Go 1.26.3 on windows-latest (push) Waiting to run
CI / Test in Docker (push) Waiting to run
CI / Test parser against vast amount of Markdowns (push) Waiting to run
Wait for stream tap finalization on shutdown (#1142)
## Summary
- add a waitable shutdown path for stream websocket handlers
- track multiplexer completion through tap RunEnd/Close finalization
- remove the unused run-level exit code parameter from StreamTap.RunEnd
- add coverage for ShutdownAndWait waiting and timeout behavior

## Test Plan
- go test ./pkg/agent/runme/stream
- runme run lint test

---------

Signed-off-by: Sebastian (Tiedtke) Huckleberry <sebastiantiedtke@gmail.com>
2026-06-01 09:04:09 -07:00
.claude chore(deps): bump Feb 6, 2026 (#1029) 2026-02-06 10:11:00 -08:00
.dagger chore(deps): Maintenance Sep 15, 2025 (#910) 2025-09-16 11:02:10 -07:00
.github chore(deps): consolidate dependabot Go module updates (#1143) 2026-05-29 15:25:47 -07:00
.vscode Upgrade golang extension directives 2026-02-05 16:08:25 -08:00
api Add ExecuteCode notebook MCP and pin protoc-gen-go-mcp (#1095) 2026-04-07 19:24:09 -07:00
cmd Update Discord invite link (#1135) 2026-05-18 14:41:45 -07:00
command Update Discord invite link (#1135) 2026-05-18 14:41:45 -07:00
docker chore(docker): upgrade Node.js to 22.x LTS (#1030) 2026-02-06 12:50:02 -08:00
document fix(editor): make execution summary timing optional 2026-04-23 16:12:35 -07:00
examples Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
experimental Support proper URL parsing for server addresses (#914) 2025-09-19 13:51:59 -07:00
internal fix(rbuffer): apply backpressure and eliminate stdout-capture deadlock (#1111) 2026-04-21 12:30:46 -07:00
notebook Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
pkg/agent Wait for stream tap finalization on shutdown (#1142) 2026-06-01 09:04:09 -07:00
project runner: fallback when git extensions are unsupported (#1074) 2026-03-30 10:25:49 -07:00
runner Update Discord invite link (#1135) 2026-05-18 14:41:45 -07:00
runnerv2client Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
runnerv2service fix(rbuffer): apply backpressure and eliminate stdout-capture deadlock (#1111) 2026-04-21 12:30:46 -07:00
session Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
telemetry Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
testdata Inherit user's process env (#1027) 2026-02-06 09:49:10 -08:00
tools Move download URLs 2025-11-24 17:48:09 -08:00
web Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
.editorconfig internal/runner: add ExecuteRequest.stop to runner.proto 2023-02-17 09:48:20 +01:00
.env.spec Env loading with the Owl Store 2025-04-11 10:40:12 -07:00
.envrc Env loading with the Owl Store 2025-04-11 10:40:12 -07:00
.gitattributes Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
.gitignore agent/codex: split websocket protocol, wire approvals, and harden tests (#1054) 2026-03-15 10:47:26 -07:00
.goreleaser.yml Fix: skip upload 2026-03-24 10:04:37 -07:00
.pre-commit-config.yaml Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
.typos.toml Implement fifo based shell env collector (#617) 2024-07-15 23:10:42 +02:00
AGENTS.md Add agent context files (#1028) 2026-02-06 09:37:11 -08:00
Brewfile Add deno 2025-11-19 16:33:47 -08:00
buf.gen.yaml chore(deps): maintenance 20251010 (#940) 2025-10-10 15:16:06 -07:00
buf.work.yaml Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
catalog-info.yaml Reference new repo 2025-03-20 16:23:36 -07:00
CLAUDE.md chore(docker): upgrade Node.js to 22.x LTS (#1030) 2026-02-06 12:50:02 -08:00
CODE_OF_CONDUCT.md Add relevant legal notices (#1012) 2026-01-29 15:13:58 -08:00
CONTRIBUTING.md agent/codex: split websocket protocol, wire approvals, and harden tests (#1054) 2026-03-15 10:47:26 -07:00
dagger.json Actually Daggerize (#782) 2025-04-09 15:41:18 -07:00
go.mod chore(deps): consolidate dependabot Go module updates (#1143) 2026-05-29 15:25:47 -07:00
go.sum chore(deps): consolidate dependabot Go module updates (#1143) 2026-05-29 15:25:47 -07:00
GOVERNANCE.md Add relevant legal notices (#1012) 2026-01-29 15:13:58 -08:00
LICENSE Copyright is Runme Authors 2025-05-12 11:17:24 -07:00
main.go Restructure internal, pkg, and neither (aka unnested) (#792) 2025-05-07 15:55:34 -07:00
main_test.go Inherit user's process env (#1027) 2026-02-06 09:49:10 -08:00
MAINTAINERS.md Add relevant legal notices (#1012) 2026-01-29 15:13:58 -08:00
Makefile chore(deps): consolidate dependabot Go module updates (#1143) 2026-05-29 15:25:47 -07:00
README.md Update Discord invite link (#1135) 2026-05-18 14:41:45 -07:00
revive.toml Implement new command run-locally. 2024-02-02 16:34:21 +01:00
sonar-project.properties It's all runmedev now 2025-10-24 10:37:15 -07:00
staticcheck.conf Implement beta commands (#518) 2024-03-28 12:48:31 -04:00

Runme

Runme runs Markdown ci Join us on Discord

OpenSSF Best Practices

Discover and run code snippets directly from your markdown files, e.g. runbooks, docs, or READMEs. Read the docs.

Runme is a tool that makes runbooks actually runnable, making it easier to follow step-by-step instructions. Shell/Bash, Python, Ruby, JavaScript/TypeScript, Lua, PHP, Perl, and many other runtimes are supported via Runme's shebang feature. Runme allows users to execute instructions, check intermediate results, and ensure the desired outputs are achieved. This makes it an excellent solution for runbooks, playbooks, and documentation that requires users to complete runnable steps incrementally—making operational docs reliable and much less susceptible to bitrot.

Runme achieves this by literally running markdown. More specifically, Runme runs your commands (shell, bash, zsh) or code inside your fenced code blocks. It's 100% compatible with your programming language's task definitions (Makefile, Gradle, Grunt, NPM scripts, Pipfile or Deno tasks, etc.) and markdown-native. Much like a terminal session, environment variables are retained across execution, and it is possible to pipe previous cells' output into successive cells. Runme persists your runbooks in markdown, which your docs are likely already using.

Watch full video at Runme.

Installation

To get started with Runme on MacOS, the recommended method of installation is using Homebrew, a popular package manager that simplifies the installation process. First, ensure your Homebrew is up to date to avoid any compatibility issues:

$ brew update

With Homebrew updated, proceed to install Runme. This command will fetch the latest stable release of Runme and install it on your system:

$ brew install runme

If you prefer using NPM (Node Package Manager) for managing your packages, Runme can also be installed globally via the following command:

$ npm install -g runme

For users with different setups, you can visit Runme's releases page and download a binary suitable for your operating system. For those with Go developer tools set up, Runme can be installed using the go install command:

$ go install github.com/runmedev/runme/v3@main

Commands

Runmes CLI (Command Line Interface) offers a set of commands designed to help you seamlessly discover and execute workflows within your project. Below are examples demonstrating the use of these commands:

Run Workflows

Suppose you have a README.md file in your project directory with the following content:

# My Project

## Install

To initiate the installation process, start by updating Brew dependencies with the following command:

```sh { name=update-brew }
brew update
...
```

To execute the update-brew code cell from the README.md file, simply use the runme run command followed by the name of the code cell:

$ runme run update-brew

For more details and advanced configurations for code cells, refer to the Runme documentation.

List

To navigate through and identify available workflows in your project, use the runme list command. This command will display a list of all workflows you can run:

$ runme list

Print

The print command is useful when you need to review the code within a code cell without executing it. It outputs the code present in the specified code cell, providing a quick way to inspect the code:

$ runme print hello-js

Help

Find help and information on parameters and configurations. If you need assistance or information regarding various parameters and configurations available with Runme, the help command provides quick access to helpful information:

$ runme help

Feel free to explore further and experiment with the commands to get a deeper understanding of Runmes functionalities!

Documentation

Check out the full documentation available at Runme.

Feedback

Let us know what you think via GitHub issues or submit a PR. Join the conversation on Discord. We're looking forward to hearing from you.

Community

The Runme community is growing, join us!

Code of Conduct

This project follows the CNCF Code of Conduct. See CODE_OF_CONDUCT.md for details.

Contributing

See CONTRIBUTING.md for more information or just click on:

Run with Runme

LICENSE

Apache License, Version 2.0