sig
  module Ssh_connection :
    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
  type t
  val load :
    ?preconfigure:Ketrew.Configuration.ssh_connection list ->
    unit -> (Ketrew.Process_holder.t, 'a) Unix_io.Deferred_result.t
  val unload :
    Ketrew.Process_holder.t ->
    (unit,
     [> `List of
          [> `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 ] ]
          list ])
    Unix_io.Deferred_result.t
  val answer_message :
    Ketrew.Process_holder.t ->
    host_io:Ketrew.Host_io.t ->
    Ketrew_pure.Protocol.Process_sub_protocol.up ->
    (Ketrew_pure.Protocol.Process_sub_protocol.down, 'a)
    Unix_io.Deferred_result.t
end