sig
  module Ssh :
    sig
      type t = {
        address : string;
        port : int option;
        user : string option;
        add_ssh_options : string list;
      }
      val to_yojson : Ketrew_host.Ssh.t -> Yojson.Safe.json
      val of_yojson :
        Yojson.Safe.json -> [ `Error of string | `Ok of Ketrew_host.Ssh.t ]
      val configure_ssh_batch_option :
        [ `Custom of string | `Dropbear | `Openssh ] -> unit
      val ssh_batch_option : Ketrew_host.Ssh.t -> string
    end
  type default_shell
  val default_shell_to_yojson : Ketrew_host.default_shell -> Yojson.Safe.json
  val default_shell_of_yojson :
    Yojson.Safe.json ->
    [ `Error of string | `Ok of Ketrew_host.default_shell ]
  type t
  val to_yojson : Ketrew_host.t -> Yojson.Safe.json
  val of_yojson :
    Yojson.Safe.json -> [ `Error of string | `Ok of Ketrew_host.t ]
  val default_shell :
    ?binary:string ->
    ?options:string list ->
    ?command_option:string -> string -> Ketrew_host.default_shell
  val localhost :
    ?execution_timeout:Ketrew_pervasives.Time.t ->
    ?default_shell:Ketrew_host.default_shell ->
    ?playground:Ketrew_path.t -> ?name:string -> unit -> Ketrew_host.t
  val tmp_on_localhost : Ketrew_host.t
  val ssh :
    ?execution_timeout:Ketrew_pervasives.Time.t ->
    ?add_ssh_options:string list ->
    ?default_shell:Ketrew_host.default_shell ->
    ?playground:Ketrew_path.t ->
    ?port:int -> ?user:string -> ?name:string -> string -> Ketrew_host.t
  val shell_of_default_shell : Ketrew_host.t -> string -> string list
  val of_uri : Uri.t -> Ketrew_host.t
  val of_string : string -> Ketrew_host.t
  val to_uri : Ketrew_host.t -> Uri.t
  val to_string_hum : Ketrew_host.t -> string
  val log : Ketrew_host.t -> Ketrew_pervasives.Log.t
  val execution_timeout : Ketrew_host.t -> Ketrew_pervasives.Time.t option
  val connection :
    Ketrew_host.t -> [ `Localhost | `Ssh of Ketrew_host.Ssh.t ]
  val playground : Ketrew_host.t -> Ketrew_path.t option
end