Tape is a lightweight, modular action processing engine designed for easy integration and automation. It allows users to define, configure, and execute custom or core actions via HTTP endpoints, supporting authentication, logging, and flexible input/output handling. Tape is ideal for orchestrating scripts, managing workflows, and securely exposing system operations in both local and containerized environments.
-
Clone the repository
git clone <repo-url> cd tape
-
Install Go (if running locally)
- Requires Go 1.22 or newer.
-
Install dependencies:
go mod tidy
-
Edit
config.ymlto match your environment (ports, paths, etc). -
Update action packages
- Build package
make build
- Run TAPE
make run
- Check initialized actions and keys
cat ./logs/event.log
-
Update docker-compose.yml and Dockerfile
- If TLS is enabled: Key and cert filenames must match the config.yml
- Default port bind is 8080 => 443, modify as needed
-
Build the Docker Image
make docker-build
-
Execute TAPE container
make docker-up
- This will start the app, mount configs, actions, logs, and files.
- The app will be available on the port specified in
docker-compose.yml(default: 8080).
- Each action must have a unique
route generate_keys(keygenfor core actions) enables or disables authentication and generates a key for the action. If disabled, they key won't be required.
- Core actions are built-in and configured in
config.yml. - Schema:
enabled: # bool method: # string keygen: # bool input: # bool data: # string output_write: # bool output_file: # string route: # string description: # string
- Writes the incoming request out to event log.
name: "whoami"
description: "Show current user"
route: "whoami"
method: POST
generate_keys: true
action: "/usr/bin/whoami"
accept_input: false
output_write: true
output_file: "whoami.log"curl -k -X POST https://<ip_address>:<port>/<route>/<key> -H "Content-Type: application/json" -d '{"data": "test message"}