A lightweight API testing and evaluation toolkit
Project description
red-roving-rascal
A pluggable analysis and scoring framework for evaluating input/output pairs against configurable quality criteria.
Install (library only)
pip install red-roving-rascal
Deploy to AWS
Deploys API Gateway → ECS Fargate → DynamoDB into your AWS account.
Prerequisites
- AWS CLI configured with credentials (
aws configure) - Docker installed and running
- Node.js ≥ 18 (for
npx cdk) - Python ≥ 3.10
One-command deploy
git clone https://github.com/dboyd13/red-roving-rascal.git
cd red-roving-rascal
python3 -m venv .venv
.venv/bin/pip install -e ".[cdk]"
npx cdk@latest bootstrap # first time per account/region
npx cdk@latest deploy
This builds the Docker image locally from the included Dockerfile, pushes it to a CDK-managed ECR repository, and deploys the full stack. Defaults to us-east-1; set CDK_DEFAULT_REGION to change:
CDK_DEFAULT_REGION=eu-west-1 npx cdk@latest deploy
Access control (optional)
Restrict API access to specific AWS accounts:
RASCAL_ALLOWED_ACCOUNTS="111111111111,222222222222" npx cdk@latest deploy
Or to an AWS Organization:
RASCAL_ORG_ID="o-abc123" npx cdk@latest deploy
Without either, the API Gateway resource policy denies all requests by default.
What gets deployed
- VPC with public/private subnets
- ECS Fargate service running the rascal backend
- Network Load Balancer (internal)
- API Gateway with IAM auth and VPC Link
- Three DynamoDB tables (data, jobs, suites)
- CloudWatch alarms (5xx errors, CPU utilization)
Tear down
npx cdk@latest destroy
Quick start (client SDK)
from rascal.client import RascalClient
client = RascalClient(endpoint="https://your-api-endpoint.execute-api.us-east-1.amazonaws.com/v1")
Extending with custom analyzers
rascal uses a plugin model. Write a wrapper that registers your components, then start the server:
from rascal.registry import Registry
from rascal.server import run
# Register your custom analyzer + judge
Registry.register("analyzer.custom", MyAnalyzer())
Registry.register("judge.custom", MyJudge())
run()
See src/rascal/registry.py for the Analyzer and Judge protocol definitions.
Development
pip install -e ".[cdk]"
pytest
License
Apache 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file red_roving_rascal-0.4.0.tar.gz.
File metadata
- Download URL: red_roving_rascal-0.4.0.tar.gz
- Upload date:
- Size: 45.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5b42017cd0e2a11526ffefddf27dcb6b7a6875dc665bf1c1d73d00bcba0c27d
|
|
| MD5 |
9b661d435ca5c77cdc1a133dd21f4579
|
|
| BLAKE2b-256 |
eb196563efbadd510925d0b3553a736205a806ccb12b596eb83cbb071b2a568d
|
Provenance
The following attestation bundles were made for red_roving_rascal-0.4.0.tar.gz:
Publisher:
publish.yml on dboyd13/red-roving-rascal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
red_roving_rascal-0.4.0.tar.gz -
Subject digest:
d5b42017cd0e2a11526ffefddf27dcb6b7a6875dc665bf1c1d73d00bcba0c27d - Sigstore transparency entry: 1211035816
- Sigstore integration time:
-
Permalink:
dboyd13/red-roving-rascal@06318d8c843fb8a18a75809f74ec2ef5b2d4e216 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/dboyd13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@06318d8c843fb8a18a75809f74ec2ef5b2d4e216 -
Trigger Event:
push
-
Statement type:
File details
Details for the file red_roving_rascal-0.4.0-py3-none-any.whl.
File metadata
- Download URL: red_roving_rascal-0.4.0-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ea70047b6d1bafd15d254983baf27dd0b9b210698c6d51672e75f4c1b160fd1
|
|
| MD5 |
8aaaf11e04f9453f451f355ecbf9a2b8
|
|
| BLAKE2b-256 |
867a62a65a0f4bc8e01c7c5384626be57c797d71f4ac78c64e960c93d2e0045d
|
Provenance
The following attestation bundles were made for red_roving_rascal-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on dboyd13/red-roving-rascal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
red_roving_rascal-0.4.0-py3-none-any.whl -
Subject digest:
2ea70047b6d1bafd15d254983baf27dd0b9b210698c6d51672e75f4c1b160fd1 - Sigstore transparency entry: 1211035832
- Sigstore integration time:
-
Permalink:
dboyd13/red-roving-rascal@06318d8c843fb8a18a75809f74ec2ef5b2d4e216 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/dboyd13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@06318d8c843fb8a18a75809f74ec2ef5b2d4e216 -
Trigger Event:
push
-
Statement type: