create-template
Create a RunPod template to define container configurations for GPU workloads, including Docker images, environment variables, ports, and storage settings.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| containerDiskInGb | No | Container disk size in GB | |
| dockerEntrypoint | No | Docker entrypoint commands | |
| dockerStartCmd | No | Docker start commands | |
| env | No | Environment variables | |
| imageName | Yes | Docker image to use | |
| isServerless | No | Is this a serverless template | |
| name | Yes | Name for the template | |
| ports | No | Ports to expose | |
| readme | No | README content in markdown format | |
| volumeInGb | No | Volume size in GB | |
| volumeMountPath | No | Path to mount the volume |
Implementation Reference
- src/index.ts:555-566 (handler)Handler function that executes the create-template tool by making a POST request to RunPod's /templates endpoint with the provided parameters and returns the JSON response.async (params) => { const result = await runpodRequest('/templates', 'POST', params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
- src/index.ts:530-554 (schema)Zod schema defining the input parameters for the create-template tool, including template name, Docker image, ports, environment variables, disk sizes, and optional fields.{ name: z.string().describe('Name for the template'), imageName: z.string().describe('Docker image to use'), isServerless: z .boolean() .optional() .describe('Is this a serverless template'), ports: z.array(z.string()).optional().describe('Ports to expose'), dockerEntrypoint: z .array(z.string()) .optional() .describe('Docker entrypoint commands'), dockerStartCmd: z .array(z.string()) .optional() .describe('Docker start commands'), env: z.record(z.string()).optional().describe('Environment variables'), containerDiskInGb: z .number() .optional() .describe('Container disk size in GB'), volumeInGb: z.number().optional().describe('Volume size in GB'), volumeMountPath: z.string().optional().describe('Path to mount the volume'), readme: z.string().optional().describe('README content in markdown format'), },
- src/index.ts:528-567 (registration)Registration of the 'create-template' tool using server.tool, including schema and handler.server.tool( 'create-template', { name: z.string().describe('Name for the template'), imageName: z.string().describe('Docker image to use'), isServerless: z .boolean() .optional() .describe('Is this a serverless template'), ports: z.array(z.string()).optional().describe('Ports to expose'), dockerEntrypoint: z .array(z.string()) .optional() .describe('Docker entrypoint commands'), dockerStartCmd: z .array(z.string()) .optional() .describe('Docker start commands'), env: z.record(z.string()).optional().describe('Environment variables'), containerDiskInGb: z .number() .optional() .describe('Container disk size in GB'), volumeInGb: z.number().optional().describe('Volume size in GB'), volumeMountPath: z.string().optional().describe('Path to mount the volume'), readme: z.string().optional().describe('README content in markdown format'), }, async (params) => { const result = await runpodRequest('/templates', 'POST', params); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } );