sig
  module Ssh :
    sig
      type t = {
        address : string;
        port : int option;
        user : string option;
        add_ssh_options : string list;
      }
      val to_yojson : Ketrew_pure.Host.Ssh.t -> Yojson.Safe.json
      val of_yojson :
        Yojson.Safe.json ->
        Ketrew_pure.Host.Ssh.t Ppx_deriving_yojson_runtime.error_or
      val configure_ssh_batch_option :
        [ `Custom of string | `Dropbear | `Openssh ] -> unit
      val ssh_batch_option : Ketrew_pure.Host.Ssh.t -> string
    end
  type default_shell
  val default_shell_to_yojson :
    Ketrew_pure.Host.default_shell -> Yojson.Safe.json
  val default_shell_of_yojson :
    Yojson.Safe.json ->
    Ketrew_pure.Host.default_shell Ppx_deriving_yojson_runtime.error_or
  type t
  val to_yojson : Ketrew_pure.Host.t -> Yojson.Safe.json
  val of_yojson :
    Yojson.Safe.json ->
    Ketrew_pure.Host.t Ppx_deriving_yojson_runtime.error_or
  val default_shell :
    ?binary:string ->
    ?options:string list ->
    ?command_option:string -> string -> Ketrew_pure.Host.default_shell
  val localhost :
    ?execution_timeout:Internal_pervasives.Time.t ->
    ?default_shell:Ketrew_pure.Host.default_shell ->
    ?playground:Path.t -> ?name:string -> unit -> Ketrew_pure.Host.t
  val tmp_on_localhost : Ketrew_pure.Host.t
  val ssh :
    ?execution_timeout:Internal_pervasives.Time.t ->
    ?add_ssh_options:string list ->
    ?default_shell:Ketrew_pure.Host.default_shell ->
    ?playground:Path.t ->
    ?port:int -> ?user:string -> ?name:string -> string -> Ketrew_pure.Host.t
  val named :
    ?execution_timeout:Internal_pervasives.Time.t ->
    ?default_shell:Ketrew_pure.Host.default_shell ->
    ?playground:Path.t -> string -> Ketrew_pure.Host.t
  val with_ssh_connection :
    Ketrew_pure.Host.t -> Ketrew_pure.Host.Ssh.t -> Ketrew_pure.Host.t
  val shell_of_default_shell : Ketrew_pure.Host.t -> string -> string list
  val of_uri :
    Internal_pervasives.Uri.t ->
    (Ketrew_pure.Host.t, [> `Host_uri_parsing_error of string * string ])
    Pvem.Result.t
  val of_string :
    string ->
    (Ketrew_pure.Host.t, [> `Host_uri_parsing_error of string * string ])
    Pvem.Result.t
  val to_uri : Ketrew_pure.Host.t -> Internal_pervasives.Uri.t
  val to_string_hum : Ketrew_pure.Host.t -> string
  val log : Ketrew_pure.Host.t -> Internal_pervasives.Log.t
  val markup : Ketrew_pure.Host.t -> Internal_pervasives.Display_markup.t
  val execution_timeout :
    Ketrew_pure.Host.t -> Internal_pervasives.Time.t option
  val connection :
    Ketrew_pure.Host.t ->
    [ `Localhost | `Named of string | `Ssh of Ketrew_pure.Host.Ssh.t ]
  val playground : Ketrew_pure.Host.t -> Path.t option
end