                (apply-partially #'fstar-subp--flycheck-continuation callback))
             (funcall callback 'finished nil)))
       (funcall callback 'interrupted nil))))
+
+(defun fstar--flycheck-verify-subp-available ()
+  "Create a verification result announcing availability of the F* subprocess."
+  (list
+   (flycheck-verification-result-new
+    :label "Subprocess running"
+    :message (if (fstar-subp-live-p) "OK, F* started."
+               "This checker requires a running F* subprocess.")
+    :face (if (fstar-subp-live-p) 'success '(bold error)))
+   (flycheck-verification-result-new
+    :label "Subprocess started"
+    :message (if (fstar-subp-available-p) "OK, F* idle."
+               "This checker only runs when the F* subprocess is idle.")
+    :face (if (fstar-subp-available-p) 'success '(bold error)))))
 
 (flycheck-define-generic-checker 'fstar-interactive
   "Flycheck checker for F*'s interactive mode.

     ["Switch to reStructuredText mode"
      fstar-literate-fst2rst])
    ("Utilities"
     ["Copy error message at point"
      fstar-copy-help-at-point (fstar--check-help-at-point)])
    ["Configuration" fstar-customize]))

  (let ((map (make-sparse-keymap)))
    ;; Basics
    (define-key map (kbd "RET") #'fstar-newline)
    (define-key map (kbd "C-c C-v") #'fstar-cli-verify)
    ;; Navigation
    (define-key map (kbd "M-p") 'fstar-subp-previous-block-start)
    (define-key map (kbd "M-n") 'fstar-subp-next-block-start)
