Service Scaffolding
Scaffold new gRPC services with a single command.
riven service create
Scaffold a new gRPC service with proto definitions, Dockerfile, Helm chart, and implementation stubs. The service name should be kebab-case.
bash
riven service create <name> [options]Options
| Option | Default | Description |
|---|---|---|
--lang <lang> | node | Language: node or python |
--output <dir> | ./<name> | Output directory |
--no-crud | — | Skip CRUD scaffold (generates a minimal service) |
--node-version <ver> | 22 | Node.js version for Dockerfile |
Examples
bash
# Node.js service with full CRUD scaffold
riven service create user-service
# Python service
riven service create ml-inference --lang python
# Minimal service (no CRUD boilerplate)
riven service create notification-service --no-crud
# Custom output directory and Node version
riven service create billing-api --output ./services/billing --node-version 22Generated Structure
Node.js Service
The scaffolded Node.js service includes everything needed to build, test, and deploy:
text
my-service/
├── proto/
│ └── my_service.proto # Service definition
├── src/
│ ├── __generated__/ # Generated stubs (after codegen)
│ ├── services/ # Implementation handlers
│ └── index.ts # Server entrypoint
├── helm/ # Helm chart for K8s deployment
├── Dockerfile
├── package.json
└── tsconfig.jsonPython Service
text
my-service/
├── proto/
│ └── my_service.proto # Service definition
├── src/
│ └── my_service/
│ ├── __generated__/ # Generated stubs (after codegen)
│ ├── services/ # Implementation handlers
│ └── main.py # Server entrypoint
├── helm/ # Helm chart for K8s deployment
├── Dockerfile
└── pyproject.tomlPost-Scaffold Workflow
After scaffolding a new service, follow these steps to get it running:
bash
# 1. Navigate to the service directory
cd my-service
# 2. Install dependencies
yarn install # Node.js
# uv sync # Python
# 3. Generate proto stubs
riven proto generate
# 4. Implement your service handlers in src/services/
# 5. Build and test locally
yarn build && yarn test # Node.js
# uv run pytest # Python
# 6. Build and push Docker image
riven publish my-service --registry <ecr-url>
# 7. Deploy to the platform
riven dev-center service deploy my-service --tag <version>After scaffolding, run riven proto generate to generate the TypeScript or Python stubs from your proto definitions, then implement the service handlers in src/services/.