sample-config.json•1.41 kB
{
  "sshProfiles": {
    "local-test": {
      "host": "127.0.0.1",
      "port": 22,
      "username": "tester",
      "password": {
        "value": "changeme"
      },
      "policy": {
        "allowedCommands": [
          "^echo\\b",
          "^python\\b",
          "^ls\\b"
        ],
        "maxExecutionMs": 300000,
        "maxOutputBytes": 262144,
        "maxConcurrent": 1
      }
    },
    "training-cluster": {
      "host": "cluster.example.com",
      "port": 22,
      "username": "trainer",
      "privateKey": {
        "path": "./secrets/training-cluster.key"
      },
      "passphrase": {
        "env": "TRAINING_CLUSTER_KEY_PASSPHRASE",
        "optional": true
      },
      "policy": {
        "allowedCommands": [
          "^python\\s+train.py\\b",
          "^/usr/local/bin/train_classifier\\b"
        ],
        "maxExecutionMs": 900000,
        "maxOutputBytes": 1048576,
        "maxConcurrent": 1
      }
    }
  },
  "databaseProfiles": {
    "training-metadata": {
      "connectionString": {
        "env": "TRAINING_METADATA_DB_URL"
      },
      "allowedStatements": [
        "^\\s*SELECT\\b",
        "^\\s*WITH\\b"
      ],
      "maxRows": 1000,
      "maxExecutionMs": 20000,
      "maxConcurrent": 2
    }
  },
  "training": {
    "defaultCommandTemplate": "python train.py --dataset={{datasetPath}} --class={{subclass}}",
    "defaultTimeoutMs": 600000
  }
}