sig
  val setsid_ssh :
    session_id_file:Unix_io.IO.path ->
    control_path:string ->
    log_to:string ->
    pipe_in:string ->
    pipe_out:string ->
    command:string ->
    temp_dir:string ->
    string ->
    (unit,
     [> `IO of
          [> `Exn of exn
           | `File_exists of string
           | `Write_file_exn of string * exn
           | `Wrong_path of string ] ])
    Unix_io.Deferred_result.t
  type t
  val create :
    ?ketrew_bin:string ->
    ?command:string ->
    name:string -> string -> Ketrew.Process_holder.Ssh_connection.t
  val markup_with_daemon_logs :
    Ketrew.Process_holder.Ssh_connection.t ->
    (Ketrew_pure.Internal_pervasives.Display_markup.t, 'a)
    Unix_io.Deferred_result.t
  val write_to_fifo :
    Ketrew.Process_holder.Ssh_connection.t ->
    string -> (unit, [> `Failure of string ]) Unix_io.Deferred_result.t
  val host_uri : Ketrew.Process_holder.Ssh_connection.t -> string
  val kill :
    Ketrew.Process_holder.Ssh_connection.t ->
    (unit,
     [> `Failure of string
      | `IO of [> `Read_file_exn of string * exn ]
      | `Shell of
          string *
          [> `Exited of int
           | `Exn of exn
           | `Signaled of int
           | `Stopped of int ] ])
    Unix_io.Deferred_result.t
end