Subcommands

Every subcommand takes an identifier and honours the global flags.

CommandArgsPurpose
lookupQUERYTiered symbol resolution — see Looking Up Symbols
package<pkg>[-ver]Package metadata (name, version, exposed modules)
module<pkg>/<Mod>Exported symbols with signatures
symbol<pkg>/<Mod>/<sym>Full info: signature, Haddock, source coords
source<pkg>/<Mod>/<sym> or <pkg>/<Mod>Source slice
versions<pkg>Version history on Hackage, plan-pinned marker
deps<pkg> [--reverse] [--depth N]Forward/reverse deps within the plan
doctorEnvironment health check
server[--port N] [--bind H:P] [--prebuild]Doc-browser HTTP server

source resolves a symbol through its component's export lists, so a re-exported name lands on its declaration rather than on whichever same-named binding the package happens to enumerate first — Data.Map.Strict.insertWith used to come back as Data/IntMap/Internal.hs. A package whose .cabal cannot be read falls back to a package-wide scan and says so on stderr.

MCP. There is no hypha mcp subcommand. The MCP surface is a separate binary, hypha-mcp — see MCP Host Integration.

Each command emits a structured envelope (result: + actions:) in YAML by default. See Global Flags for --json, --select, and --full.