SSH: 4 reads, 3 writes and 1 destructive call, one client
Link a remote host over SSH (password or private key). Every call below is available over HTTP, through the SDK and as a tool for a coding agent, with the same arguments and the same meter.
What SSH can do here
The integration exposes 4 reads, 3 writes and 1 destructive call, each with a declared input and output schema rather than a page of documentation you would have to translate. Link a remote host over SSH (password or private key).
How it authenticates
SSH authenticates with a password, privateKey and a passphrase, supplied per request or stored once against your account and sealed at rest.
Capabilities it fulfils
SSH answers storage.object.download, storage.object.list, storage.object.remove and storage.object.upload in the vendor-neutral form, which means code asking for any of those can be pointed at SSH without naming it. If it goes down, or you would rather use somebody else, that is a preference change and not a rewrite.
- list — read: One page of a directory. An empty path opens the profile’s root, so a host pinned to /srv/app opens there and one pinned to nothing opens at /.
- stat — read: One path’s metadata, in the same shape a listing entry has.
- read — read: A file’s contents, capped. The reply always says whether it was truncated — a caller shown the first 2MB of a 900MB log with no flag reads it as the whole file.
- usage — read: How much space everything under a path takes, biggest first. Bounded in three directions — nodes, depth and time — because the caller is asking precisely because they do not know how big the tree is.
- write — write: Create or replace a file. Refused unless the host has read-only turned off.
- mkdir — write: Create a directory. Refused unless the host has read-only turned off.
- rename — write: Rename or move a path. BOTH ends are resolved against the profile root, so a move cannot be the way a file leaves it.
- remove — destructive: Delete a file, or an EMPTY directory. A non-empty directory is refused — there is no undo over SFTP, and a recursive delete driven across somebody else’s machine with no quarantine is not something this offers.
Questions
Do I have to bring my own API keys?
You can, and that lane is free for ever — pass your key on the request or store it against your account, and we are one proxy hop. The paid lane is the other direction: we call 226 providers with our credentials so you never register anywhere. Both go through the same client and the same operation names.
What happens to a key I store here?
It is sealed with AES-256-GCM before it reaches the database and is only ever opened to make the call you asked for. It is scoped to your account, it is never logged, and deleting the connection deletes it. For an OAuth provider we hold a refresh token instead, and revoking the link at the provider stops the calls here immediately.
What happens when a provider changes its API?
The operation contract is declared, so a response that no longer matches is a refusal rather than a silently wrong answer. The contract does not coerce types — a field declared a number that arrives as a string is rejected at the edge, on the way in and on the way out.