Appearance
code_execute
Execute Node.js code on-demand in a secure Kubernetes sandbox environment.
Description
The code_execute tool runs your Node.js code as an isolated Kubernetes Job and returns the results. It supports NPM package installation, custom resource limits, and secret injection.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | ✅ Yes | JavaScript/TypeScript code to execute |
runtime | string | No | Runtime version (default: node18) |
params | object | No | Execution parameters |
params.cpu | string | No | CPU limit (e.g., "500m", "1") |
params.memory | string | No | Memory limit (e.g., "512Mi", "1Gi") |
params.timeoutSeconds | number | No | Max execution time (1-300 seconds) |
params.secrets | string[] | No | Array of secret names to inject as env vars |
Response
typescript
{
"executionId": "exec_abc123def456",
"status": "running" | "completed" | "failed",
"result": any, // Returned value from your code
"logs": string, // stdout/stderr output
"credits": {
"used": 10,
"remaining": 990
},
"timing": {
"started": "2025-01-08T10:30:00Z",
"completed": "2025-01-08T10:30:05Z",
"duration": 5000 // milliseconds
}
}Examples
Basic Execution
typescript
{
"code": "console.log('Hello, Actify!'); return { message: 'Success' };",
"runtime": "node18"
}With NPM Packages
typescript
{
"code": `
const axios = require('axios');
const response = await axios.get('https://api.github.com/users/octocat');
return response.data;
`,
"runtime": "node18",
"params": {
"timeoutSeconds": 30
}
}With Custom Resources
typescript
{
"code": `
// CPU-intensive task
const result = Array.from({ length: 1000000 }, (_, i) => i * i);
return result.length;
`,
"runtime": "node18",
"params": {
"cpu": "1",
"memory": "1Gi",
"timeoutSeconds": 60
}
}With Secrets
typescript
{
"code": `
const apiKey = process.env.OPENAI_API_KEY;
const axios = require('axios');
const response = await axios.post('https://api.openai.com/v1/chat/completions', {
model: 'gpt-4',
messages: [{ role: 'user', content: 'Hello!' }]
}, {
headers: { 'Authorization': \`Bearer \${apiKey}\` }
});
return response.data;
`,
"runtime": "node18",
"params": {
"timeoutSeconds": 30,
"secrets": ["OPENAI_API_KEY"]
}
}File Operations
typescript
{
"code": `
const fs = require('fs').promises;
// Write file
await fs.writeFile('/tmp/output.json', JSON.stringify({
timestamp: Date.now(),
data: [1, 2, 3]
}));
// Read file
const content = await fs.readFile('/tmp/output.json', 'utf-8');
return JSON.parse(content);
`,
"runtime": "node18"
}Credit Usage
Code execution consumes credits based on:
- CPU usage: 1 credit per 100ms of CPU time
- Memory usage: 1 credit per 100MB allocated
- Duration: 1 credit per second of execution
Base cost: 10 credits minimum per execution
Runtime Specifications
node18 (Default)
- Node.js 18.x LTS
- Full npm package ecosystem
- ES Modules and CommonJS support
- Built-in modules:
fs,path,crypto,http, etc.
Resource Limits
- CPU:
100mto2cores - Memory:
128Mito2Gi - Timeout:
1to300seconds - Disk:
1Giephemeral storage
Error Handling
Common Errors
Timeout Error
json
{
"error": {
"code": "EXECUTION_TIMEOUT",
"message": "Execution exceeded 30 seconds timeout"
}
}Out of Memory
json
{
"error": {
"code": "OUT_OF_MEMORY",
"message": "Container exceeded memory limit of 512Mi"
}
}Package Not Found
json
{
"error": {
"code": "NPM_INSTALL_FAILED",
"message": "Failed to install package: axios@999.0.0"
}
}Insufficient Credits
json
{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Not enough credits. Required: 100, Available: 50"
}
}Best Practices
1. Set Appropriate Timeouts
typescript
// For quick tasks
{ "params": { "timeoutSeconds": 10 } }
// For API calls
{ "params": { "timeoutSeconds": 30 } }
// For heavy processing
{ "params": { "timeoutSeconds": 120 } }2. Use Resource Limits
typescript
// Prevent excessive usage
{
"params": {
"cpu": "500m",
"memory": "512Mi",
"timeoutSeconds": 30
}
}3. Handle Errors Gracefully
typescript
{
"code": `
try {
const result = await riskyOperation();
return { success: true, data: result };
} catch (error) {
return { success: false, error: error.message };
}
`
}4. Clean Up Resources
typescript
{
"code": `
const fs = require('fs').promises;
try {
await fs.writeFile('/tmp/temp.txt', 'data');
// ... do work ...
} finally {
await fs.unlink('/tmp/temp.txt').catch(() => {});
}
`
}See Also
- code_schedule - Schedule recurring executions
- execution_status - Monitor execution progress
- Examples - More code examples