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 ->
        [ `Error of string | `Ok of Ketrew_pure.Host.Ssh.t ]
      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 ->
    [ `Error of string | `Ok of Ketrew_pure.Host.default_shell ]
  type t
  val to_yojson : Ketrew_pure.Host.t -> Yojson.Safe.json
  val of_yojson :
    Yojson.Safe.json -> [ `Error of string | `Ok of Ketrew_pure.Host.t ]
  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 shell_of_default_shell : Ketrew_pure.Host.t -> string -> string list
  val of_uri : Uri.t -> Ketrew_pure.Host.t
  val of_string : string -> Ketrew_pure.Host.t
  val to_uri : Ketrew_pure.Host.t -> 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 | `Ssh of Ketrew_pure.Host.Ssh.t ]
  val playground : Ketrew_pure.Host.t -> Path.t option
end