BotRunner
No description
type BotRunner implements Node {
encryptionStatus: EncryptionStatus!
id: ID!
public: Boolean!
deletedAt: Time
encryptionMode: BotRunnerEncryptionMode!
keyCustodyBackend: BotRunnerKeyCustodyBackend!
keyID: String
keyVersion: Int
algorithm: BotRunnerEncryptionAlgorithm!
encryptedAt: Time
name: String!
type: BotRunnerRunnerType!
config: Map
dataIsReady: Boolean!
dataLastUpdated: Time
dataDownloadStatus: BotRunnerDataDownloadStatus!
dataDownloadStartedAt: Time
dataErrorMessage: String
dataDownloadConfig: Map
backupGracePeriodSeconds: Int!
s3Config: Map
s3DataKey: String
s3DataUploadedAt: Time
ownerID: String!
billingEnabled: Boolean!
cpuPricePerCoreHour: Float
memoryPricePerGBHour: Float
networkPricePerGB: Float
storagePricePerGB: Float
createdAt: Time!
updatedAt: Time!
bots(
after: Cursor
first: Int
before: Cursor
last: Int
orderBy: [BotOrder!]
where: BotWhereInput
): BotConnection!
backtests(
after: Cursor
first: Int
before: Cursor
last: Int
orderBy: [BacktestOrder!]
where: BacktestWhereInput
): BacktestConnection!
hyperopts(
after: Cursor
first: Int
before: Cursor
last: Int
orderBy: [HyperoptOrder!]
where: HyperoptWhereInput
): HyperoptConnection!
legibleStatus: EntityStatus!
encryptionLocked: Boolean!
monitoring: RunnerMonitoring!
}
Fields
BotRunner.encryptionStatus ● EncryptionStatus! non-null object
BotRunner.id ● ID! non-null scalar
BotRunner.public ● Boolean! non-null scalar
Whether this resource is publicly visible to all authenticated users
BotRunner.deletedAt ● Time scalar
Soft-delete timestamp. If set, record is considered deleted.
BotRunner.encryptionMode ● BotRunnerEncryptionMode! non-null enum
Trust-ladder encryption mode for this row's sensitive fields. Set at create time; immutable after. Defaults to 'legacy_server' for all rows created before the trust ladder shipped.
BotRunner.keyCustodyBackend ● BotRunnerKeyCustodyBackend! non-null enum
KeyCustodyBackend implementation that produced the wrapping key. Pinned at write time alongside encryption_mode.
BotRunner.keyID ● String scalar
Opaque identifier of the wrapping key, backend-specific. Null for legacy_server rows that use the global process key.
BotRunner.keyVersion ● Int scalar
Rotation counter for the wrapping key. Null for legacy_server rows; populated when the row is rewrapped under a versioned key.
BotRunner.algorithm ● BotRunnerEncryptionAlgorithm! non-null enum
Symmetric algorithm protecting the row's sensitive fields. Stored alongside the ciphertext so future migrations can retire algorithms without re-encrypting existing rows.
BotRunner.encryptedAt ● Time scalar
Timestamp the row's sensitive fields were last encrypted with the current key_id/key_version. Null for legacy_server rows.
BotRunner.name ● String! non-null scalar
Runner display name
BotRunner.type ● BotRunnerRunnerType! non-null enum
Runner environment type (docker, kubernetes, local)
BotRunner.config ● Map scalar
Runner connection configuration (host, port, credentials, etc.)
BotRunner.dataIsReady ● Boolean! non-null scalar
Whether runner has downloaded historical data for backtesting
BotRunner.dataLastUpdated ● Time scalar
When data was last refreshed
BotRunner.dataDownloadStatus ● BotRunnerDataDownloadStatus! non-null enum
Current data download status (idle, downloading, completed, failed)
BotRunner.dataDownloadStartedAt ● Time scalar
When the current data download started (for stuck detection)
BotRunner.dataErrorMessage ● String scalar
Error message if data download failed
BotRunner.dataDownloadConfig ● Map scalar
Data download configuration: {exchanges: [{name, enabled, timeframes, pairs_pattern, days, trading_mode}]}
BotRunner.backupGracePeriodSeconds ● Int! non-null scalar
Seconds k8s waits for pod termination so a final backup can complete. Defaults to 60; bots with large DBs on slow networks may need more.
BotRunner.s3Config ● Map scalar
S3 config: {endpoint, bucket, accessKeyId, secretAccessKey, region, forcePathStyle, useSSL}
BotRunner.s3DataKey ● String scalar
S3 object key: runners/data/{runnerId}.zip
BotRunner.s3DataUploadedAt ● Time scalar
When data was last uploaded to S3
BotRunner.ownerID ● String! non-null scalar
Group ID (organization) that owns this bot runner
BotRunner.billingEnabled ● Boolean! non-null scalar
Whether usage tracking and billing is enabled for this runner
BotRunner.cpuPricePerCoreHour ● Float scalar
Price per core-hour in USD (only used if billing_enabled)
BotRunner.memoryPricePerGBHour ● Float scalar
Price per GB-hour in USD (only used if billing_enabled)
BotRunner.networkPricePerGB ● Float scalar
Price per GB of network transfer in USD (only used if billing_enabled)
BotRunner.storagePricePerGB ● Float scalar
Price per GB of disk I/O in USD (only used if billing_enabled)
BotRunner.createdAt ● Time! non-null scalar
BotRunner.updatedAt ● Time! non-null scalar
BotRunner.bots ● BotConnection! non-null object
BotRunner.bots.after ● Cursor scalar
Returns the elements in the list that come after the specified cursor.
BotRunner.bots.first ● Int scalar
Returns the first _n_ elements from the list.
BotRunner.bots.before ● Cursor scalar
Returns the elements in the list that come before the specified cursor.
BotRunner.bots.last ● Int scalar
Returns the last _n_ elements from the list.
BotRunner.bots.orderBy ● [BotOrder!] list input
Ordering options for Bots returned from the connection.
BotRunner.bots.where ● BotWhereInput input
Filtering options for Bots returned from the connection.
BotRunner.backtests ● BacktestConnection! non-null object
BotRunner.backtests.after ● Cursor scalar
Returns the elements in the list that come after the specified cursor.
BotRunner.backtests.first ● Int scalar
Returns the first _n_ elements from the list.
BotRunner.backtests.before ● Cursor scalar
Returns the elements in the list that come before the specified cursor.
BotRunner.backtests.last ● Int scalar
Returns the last _n_ elements from the list.
BotRunner.backtests.orderBy ● [BacktestOrder!] list input
Ordering options for Backtests returned from the connection.
BotRunner.backtests.where ● BacktestWhereInput input
Filtering options for Backtests returned from the connection.
BotRunner.hyperopts ● HyperoptConnection! non-null object
BotRunner.hyperopts.after ● Cursor scalar
Returns the elements in the list that come after the specified cursor.
BotRunner.hyperopts.first ● Int scalar
Returns the first _n_ elements from the list.
BotRunner.hyperopts.before ● Cursor scalar
Returns the elements in the list that come before the specified cursor.
BotRunner.hyperopts.last ● Int scalar
Returns the last _n_ elements from the list.
BotRunner.hyperopts.orderBy ● [HyperoptOrder!] list input
Ordering options for Hyperopts returned from the connection.
BotRunner.hyperopts.where ● HyperoptWhereInput input
Filtering options for Hyperopts returned from the connection.
BotRunner.legibleStatus ● EntityStatus! non-null object
BotRunner.encryptionLocked ● Boolean! non-null scalar
True when the runner's config has at least one passphrase-encrypted leaf that the current session could not decrypt. UI consumers must show an unlock overlay before rendering the connection form.
BotRunner.monitoring ● RunnerMonitoring! non-null object
Interfaces
Node interface
An object with an ID. Follows the Relay Global Object Identification Specification
Returned By
createBotRunner mutation ● createBotRunnerWithPassphrase mutation ● runnerChanged subscription ● runnerStatusChanged subscription ● setRunnerVisibility mutation ● updateBotRunner mutation ● updateBotRunnerConfigWithPassphrase mutation
Member Of
Backtest object ● Bot object ● BotRunnerEdge object ● Hyperopt object ● RefreshRunnerDataResult object ● ResourceUsageAggregation object ● ResourceUsageSample object