Launcher API

The launcher (grroxy) manages projects and provides shared utilities. Default port: 8888.

CA Certificate

MethodPathAuthDescription
GET/cacert.crtNoDownload the CA certificate for HTTPS interception

Projects

MethodPathAuthDescription
GET/api/project/listNoList all projects
POST/api/project/newYesCreate a new project and start its grroxy-app instance
POST/api/project/openYesOpen an existing project by name or ID
POST/api/project/deleteNoDelete a project, its DB record, and project folder

POST /api/project/new body:

{
  "name": "my-project"
}

POST /api/project/open body:

{
  "project": "my-project"
}

POST /api/project/delete body:

{
  "id": "project-record-id"
}

Commands

MethodPathAuthDescription
POST/api/runcommandYesExecute a shell command and save output
{
  "command": "echo hello",
  "data": "",
  "saveTo": "collection",
  "collection": "cmd_output",
  "filename": ""
}

Cook

MethodPathAuthDescription
POST/api/cook/searchYesSearch available Cook patterns and methods
{
  "search": "encode"
}

Files

MethodPathAuthDescription
POST/api/readfileYesRead file from cache, config, or cwd
POST/api/savefileYesSave data to a file

POST /api/readfile body:

{
  "fileName": "output.txt",
  "folder": "cache"
}

POST /api/savefile body:

{
  "fileName": "output.txt",
  "fileData": "hello world",
  "folder": "cache"
}

File Watcher

MethodPathAuthDescription
GET/api/filewatcherNoWatch GRROXY_TEMPLATE_DIR for changes via SSE

Regex

MethodPathAuthDescription
POST/api/regexNoTest a regex pattern against a string
{
  "regex": "<title>(.*?)</title>",
  "responseBody": "<html><title>Test</title></html>"
}

SQL

MethodPathAuthDescription
POST/api/sqltestYesExecute a raw SQL query
{
  "sql": "SELECT * FROM _projects LIMIT 10"
}

Templates

Templates provide hook-based automation on proxy traffic. Each template has tasks with conditions (using dadql syntax) and actions that execute when conditions match.

Available actions: create_label, set, delete, replace, send_request

Available hooks: proxy:before_request, proxy:request, proxy:response

MethodPathAuthDescription
GET/api/templates/listNoList all templates from the database
POST/api/templates/newNoCreate a new template
DELETE/api/templates/:templateNoDelete a template by ID
GET/api/templates/infoNoGet available actions, hooks, keys, and full syntax reference
POST/api/templates/checkNoValidate template YAML before saving

POST /api/templates/new body:

{
  "name": "label-api-requests",
  "title": "Label API Requests",
  "description": "Labels requests containing /api in the path",
  "type": "actions",
  "mode": "any",
  "hooks": { "proxy": ["request"] },
  "tasks": [
    {
      "id": "api-label",
      "condition": "req.path ~ '/api'",
      "todo": [{ "create_label": { "name": "api", "color": "orange" } }]
    }
  ],
  "enabled": true
}

POST /api/templates/check — validate before saving:

{
  "yaml": "id: my-template\nconfig:\n  hooks:\n    proxy: [request]\ntasks:\n  - id: t1\n    todo:\n      - create_label:\n          name: test"
}

Response: { "valid": true, "errors": [], "warnings": [] }

Enable/Disable Toggles

Templates have 3 levels of control:

  1. Global_configs record with key settings.templatesEnabled
  2. Per-projecttemplatesEnabled in _projects.data
  3. Per-proxyrun_templates in _proxies.data

All three must be enabled for templates to execute on a proxy.

Tools

MethodPathAuthDescription
GET/api/tool/serverNoStart or retrieve a grroxy-tool server instance by ID
GET/api/toolNoStart a new PocketBase tool instance at the given path

Updates

MethodPathAuthDescription
GET/api/update/checkNoCheck if a newer version is available
POST/api/updateNoDownload and install the latest grroxy binaries