Manager API#
The GenVM Manager is an HTTP server that provides an API for managing GenVM instances, modules, and related operations.
- GET /status#
Get manager status
Returns the current status of the manager, its modules, permits, and running executions.
- Status Codes:
200 OK – Manager status
- POST /module/start#
Start a module
Start a module with the specified configuration.
- Status Codes:
200 OK – Module started successfully
500 Internal Server Error – Error response
- POST /module/stop#
Stop a module
Stop a running module.
- Status Codes:
200 OK – Module stop result
500 Internal Server Error – Error response
- POST /genvm/run#
Start a GenVM execution
Start a new GenVM instance for contract execution.
The request body uses calldata binary encoding (not JSON). The schema below shows the logical structure that must be encoded using the calldata format.
- Status Codes:
200 OK – GenVM instance started
500 Internal Server Error – Error response
- GET /genvm/{genvm_id}#
Get GenVM status
Get the status of a specific GenVM instance.
- Parameters:
genvm_id (integer) – Unique identifier of the GenVM instance
- Status Codes:
200 OK – GenVM status
500 Internal Server Error – Error response
- DELETE /genvm/{genvm_id}#
Shutdown GenVM instance
Gracefully shutdown a GenVM instance.
- Parameters:
genvm_id (integer) – Unique identifier of the GenVM instance
- Query Parameters:
wait_timeout_ms (integer) – Timeout in milliseconds to wait for graceful shutdown
- Status Codes:
200 OK – Shutdown result
- POST /contract/detect-version#
Detect contract version
Detect the major version specification from contract bytecode.
- Status Codes:
200 OK – Detected version
500 Internal Server Error – Error response
- Request Headers:
Deployment-Timestamp – Contract deployment timestamp in RFC3339 format (Required)
- POST /log/level#
Set log level
Set the logging level for the manager.
- Status Codes:
200 OK – Log level set
500 Internal Server Error – Error response
- POST /manifest/reload#
Reload manifest
Reload the executor version manifest.
- Status Codes:
200 OK – Manifest reloaded
500 Internal Server Error – Error response
- POST /env#
Set environment variable
Set an environment variable in the manager process.
- Status Codes:
200 OK – Environment variable set
500 Internal Server Error – Error response
- GET /permits#
Get permits
Get the current number of execution permits available.
- Status Codes:
200 OK – Current permits
- POST /permits#
Set permits
Set the number of execution permits.
- Status Codes:
200 OK – Permits set
500 Internal Server Error – Error response
- POST /llm/check#
Check LLM availability
Test availability and functionality of LLM provider configurations.
- Status Codes:
200 OK – LLM availability results
500 Internal Server Error – Error response
- GET /vm-error/describe#
Describe VM error
Get a human-readable description for a VM error code.
- Query Parameters:
error (string) – The VM error code to describe (Required)
- Status Codes:
200 OK – Error description
500 Internal Server Error – Error response
{
"v0.1.0": {
"cpython": [
"1s66bd44b80habdw2ayf4hyncvpkmmjwva0h6nkk738flsd5nis0"
],
"models-all-MiniLM-L6-v2": [
"1sfhqijjsnsf6ik1zvdv4vxjidrjhsbnk1vgs1c5ksgv193flyqb"
],
"py-genlayer": [
"15qfivjvy80800rh998pcxmd2m8va1wq2qzqhz850n8ggcr4i9q0"
],
"py-genlayer-multi": [
"0cwifyzi3956f9yxdpq5kk3ihazv2llsxfj626zbadrg4cizwhq5"
],
"py-lib-cloudpickle": [
"1pqxan7lxsjrvs66b4a7k81w7rrgbsqi3hxhp7b4bn4gks1b64rb"
],
"py-lib-genlayer-embeddings": [
"09h0i209wrzh4xzq86f79c60x0ifs7xcjwl53ysrnw06i54ddxyi"
],
"py-lib-genlayer-std": [
"0asq35p8mzlzwgxcrx5v51srnsqyj72cq7993way1vqddwxcvkq4"
],
"py-lib-protobuf": [
"0riri6vk1ma3cnmlwls3d4771y0cf3c44afsl6gwfmnl2cpcbdl1"
],
"py-lib-word_piece_tokenizer": [
"0m4yvkrbqnyygs4g3mmp11kprylks23q9m0pxnkpm1fg4kpck3qq"
],
"softfloat": [
"17b5yad9r9jzcflawqi12r5llhgklfr6lp75r915r99l4wg8ni4n"
]
},
"v0.1.3": {
"cpython": [
"1s66bd44b80habdw2ayf4hyncvpkmmjwva0h6nkk738flsd5nis0"
],
"models-all-MiniLM-L6-v2": [
"1sfhqijjsnsf6ik1zvdv4vxjidrjhsbnk1vgs1c5ksgv193flyqb"
],
"py-genlayer": [
"1j12s63yfjpva9ik2xgnffgrs6v44y1f52jvj9w7xvdn7qckd379"
],
"py-genlayer-multi": [
"0xn02qjjqlpxadhs124cwrr5ddqs7dxcc6m5a7c6801hv54l66p0"
],
"py-lib-cloudpickle": [
"1pqxan7lxsjrvs66b4a7k81w7rrgbsqi3hxhp7b4bn4gks1b64rb"
],
"py-lib-genlayer-embeddings": [
"09h0i209wrzh4xzq86f79c60x0ifs7xcjwl53ysrnw06i54ddxyi"
],
"py-lib-genlayer-std": [
"1mds1jiy7phn7b7irqviwbl8lp026dsxfkzv88gj0lkmvcqk5aak"
],
"py-lib-protobuf": [
"0riri6vk1ma3cnmlwls3d4771y0cf3c44afsl6gwfmnl2cpcbdl1"
],
"py-lib-word_piece_tokenizer": [
"0m4yvkrbqnyygs4g3mmp11kprylks23q9m0pxnkpm1fg4kpck3qq"
],
"softfloat": [
"17b5yad9r9jzcflawqi12r5llhgklfr6lp75r915r99l4wg8ni4n"
]
},
"v0.1.8-runner-hash___": {
"cpython": [
"1s66bd44b80habdw2ayf4hyncvpkmmjwva0h6nkk738flsd5nis0"
],
"models-all-MiniLM-L6-v2": [
"1sfhqijjsnsf6ik1zvdv4vxjidrjhsbnk1vgs1c5ksgv193flyqb"
],
"py-genlayer": [
"132536jbnxkd1axfxg5rpfr5b60cr11adm2y4r90hgn0l59qsp9w"
],
"py-genlayer-multi": [
"0iddpsb7hsrqv10xf4sjdiknba0m3fkm2x9xldy7ci3gj1fpkpjy"
],
"py-lib-cloudpickle": [
"1pqxan7lxsjrvs66b4a7k81w7rrgbsqi3hxhp7b4bn4gks1b64rb"
],
"py-lib-genlayer-embeddings": [
"09h0i209wrzh4xzq86f79c60x0ifs7xcjwl53ysrnw06i54ddxyi"
],
"py-lib-genlayer-std": [
"0mmsw09shx3613jzkhbmqyqw60h6b27hy7bjdbb1msfp40g2idi6"
],
"py-lib-protobuf": [
"0riri6vk1ma3cnmlwls3d4771y0cf3c44afsl6gwfmnl2cpcbdl1"
],
"py-lib-word_piece_tokenizer": [
"0m4yvkrbqnyygs4g3mmp11kprylks23q9m0pxnkpm1fg4kpck3qq"
],
"softfloat": [
"17b5yad9r9jzcflawqi12r5llhgklfr6lp75r915r99l4wg8ni4n"
]
},
"v0.2.1": {
"cpython": [
"1bk9g3zgym0rrpd9lk584cxfaa4rg0cz36w6xhzkqdj1m2p4xa9n"
],
"models-all-MiniLM-L6-v2": [
"0d1skbkxl1ij1sfm0jvnh18ih5a9mxfiny0myqnyf0wa5jc50mis"
],
"py-genlayer": [
"1jb45aa8ynh2a9c9xn3b7qqh8sm5q93hwfp7jqmwsfhh8jpz09h6"
],
"py-genlayer-multi": [
"06zyvrlivjga0d5jlpdbprksc0pa6jmllxvp8s20hq1l512vh5yk"
],
"py-lib-cloudpickle": [
"1dlk6mnfabi0z7r39635amyfzw8xb6rm8bv4pmgv6ji1bfx9hghd"
],
"py-lib-genlayer-embeddings": [
"0bmbm3cyfwxsyh454z53vxqjf47wz2q7smcqp1q4g4a6k2kidnyk"
],
"py-lib-genlayer-std": [
"11rhn002yfajawsz7fai6mykznbxkxs6l91iskj5cm82c92qhy3v"
],
"py-lib-protobuf": [
"0riri6vk1ma3cnmlwls3d4771y0cf3c44afsl6gwfmnl2cpcbdl1"
],
"py-lib-word_piece_tokenizer": [
"0vjc9x1qqv7bgkf9aldqsi708892vzh2w7mwzhq6w1174qan4bas"
],
"softfloat": [
"08g85lmbfjngvvjyx1gr1pyk61nqba0y42gba8wrb1qd3zkv2gmd"
]
},
"v0.2.4": {
"cpython": [
"1bk9g3zgym0rrpd9lk584cxfaa4rg0cz36w6xhzkqdj1m2p4xa9n"
],
"models-all-MiniLM-L6-v2": [
"0d1skbkxl1ij1sfm0jvnh18ih5a9mxfiny0myqnyf0wa5jc50mis"
],
"py-genlayer": [
"1jb45aa8ynh2a9c9xn3b7qqh8sm5q93hwfp7jqmwsfhh8jpz09h6"
],
"py-genlayer-multi": [
"06zyvrlivjga0d5jlpdbprksc0pa6jmllxvp8s20hq1l512vh5yk"
],
"py-lib-cloudpickle": [
"1dlk6mnfabi0z7r39635amyfzw8xb6rm8bv4pmgv6ji1bfx9hghd"
],
"py-lib-genlayer-embeddings": [
"0bmbm3cyfwxsyh454z53vxqjf47wz2q7smcqp1q4g4a6k2kidnyk"
],
"py-lib-genlayer-std": [
"11rhn002yfajawsz7fai6mykznbxkxs6l91iskj5cm82c92qhy3v"
],
"py-lib-protobuf": [
"0riri6vk1ma3cnmlwls3d4771y0cf3c44afsl6gwfmnl2cpcbdl1"
],
"py-lib-word_piece_tokenizer": [
"0vjc9x1qqv7bgkf9aldqsi708892vzh2w7mwzhq6w1174qan4bas"
],
"softfloat": [
"08g85lmbfjngvvjyx1gr1pyk61nqba0y42gba8wrb1qd3zkv2gmd"
]
},
"v0.2.5": {
"cpython": [
"1bk9g3zgym0rrpd9lk584cxfaa4rg0cz36w6xhzkqdj1m2p4xa9n"
],
"models-all-MiniLM-L6-v2": [
"0d1skbkxl1ij1sfm0jvnh18ih5a9mxfiny0myqnyf0wa5jc50mis"
],
"py-genlayer": [
"1jb45aa8ynh2a9c9xn3b7qqh8sm5q93hwfp7jqmwsfhh8jpz09h6"
],
"py-genlayer-multi": [
"06zyvrlivjga0d5jlpdbprksc0pa6jmllxvp8s20hq1l512vh5yk"
],
"py-lib-cloudpickle": [
"1dlk6mnfabi0z7r39635amyfzw8xb6rm8bv4pmgv6ji1bfx9hghd"
],
"py-lib-genlayer-embeddings": [
"0bmbm3cyfwxsyh454z53vxqjf47wz2q7smcqp1q4g4a6k2kidnyk"
],
"py-lib-genlayer-std": [
"11rhn002yfajawsz7fai6mykznbxkxs6l91iskj5cm82c92qhy3v"
],
"py-lib-protobuf": [
"0riri6vk1ma3cnmlwls3d4771y0cf3c44afsl6gwfmnl2cpcbdl1"
],
"py-lib-word_piece_tokenizer": [
"0vjc9x1qqv7bgkf9aldqsi708892vzh2w7mwzhq6w1174qan4bas"
],
"softfloat": [
"08g85lmbfjngvvjyx1gr1pyk61nqba0y42gba8wrb1qd3zkv2gmd"
]
},
"vTEST": {
"cpython": [
"1bk9g3zgym0rrpd9lk584cxfaa4rg0cz36w6xhzkqdj1m2p4xa9n"
],
"models-all-MiniLM-L6-v2": [
"0d1skbkxl1ij1sfm0jvnh18ih5a9mxfiny0myqnyf0wa5jc50mis"
],
"py-genlayer": [
"1jb45aa8ynh2a9c9xn3b7qqh8sm5q93hwfp7jqmwsfhh8jpz09h6"
],
"py-genlayer-multi": [
"06zyvrlivjga0d5jlpdbprksc0pa6jmllxvp8s20hq1l512vh5yk"
],
"py-lib-cloudpickle": [
"1dlk6mnfabi0z7r39635amyfzw8xb6rm8bv4pmgv6ji1bfx9hghd"
],
"py-lib-genlayer-embeddings": [
"0bmbm3cyfwxsyh454z53vxqjf47wz2q7smcqp1q4g4a6k2kidnyk"
],
"py-lib-genlayer-std": [
"11rhn002yfajawsz7fai6mykznbxkxs6l91iskj5cm82c92qhy3v"
],
"py-lib-protobuf": [
"0riri6vk1ma3cnmlwls3d4771y0cf3c44afsl6gwfmnl2cpcbdl1"
],
"py-lib-word_piece_tokenizer": [
"0vjc9x1qqv7bgkf9aldqsi708892vzh2w7mwzhq6w1174qan4bas"
],
"softfloat": [
"08g85lmbfjngvvjyx1gr1pyk61nqba0y42gba8wrb1qd3zkv2gmd"
]
}
}