code: func interactive() {
  	status, err := seesawConn.ClusterStatus()
  	if err != nil {
  		fatalf("Failed to get cluster status: %v", err)
  	}
  	fmt.Printf("\nSeesaw CLI - Engine version %d\n\n", status.Version)
  
  	u, err := user.Current()
  	if err != nil {
  		fatalf("Failed to get current user: %v", err)
  	}
  
  	ha, err := seesawConn.HAStatus()
  	if err != nil {
  		fatalf("Failed to get HA status: %v", err)
  	}
  	if ha.State != seesaw.HAMaster {
  		fmt.Println("WARNING: This seesaw is not currently the master.")
  	}
  
  	prompt = fmt.Sprintf("%s@%s> ", u.Username, status.Site)
  
  	// Setup signal handler before we switch to a raw terminal.
  	sigc := make(chan os.Signal, 3)
  	signal.Notify(sigc, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM)
  	go func() {
  		<-sigc
  		exit()
  	}()
  
  	terminalInit()
  
  	for {
  		cmdline, err := term.ReadLine()
  		if err != nil {
  			break
  		}
  		cmdline = strings.TrimSpace(cmdline)
  		if cmdline == "" {
  			continue
  		}
  		if err := seesawCLI.Execute(cmdline); err != nil {
  			fmt.Println(err)
  		}
  	}
  }
docs: // interactive invokes the interactive CLI interface.