← Back to search

io.github.HurleySk/can-see

HurleySk Scanned 7d ago

Let AI agents see and interact with terminal/CLI apps via PNG screenshots

C
66.8 / 100

Versions

No versions found.

PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 21

launch
annotations: none low

Launch a CLI app in a virtual terminal. IMPORTANT: You MUST call

cwd string cols number rows number command string
screenshot
annotations: none low

Capture the terminal as a PNG image

sessionId string
screenshot_region
annotations: none low

Capture a specific rectangular area of the visible terminal as a PNG image

endCol number endRow number startCol number startRow number sessionId string
screenshot_text_region
annotations: none low

Find text in the viewport and capture the surrounding area as a PNG. Searches visible viewport only (single-line match, returns first match top-to-bottom).

sessionId string paddingRows number containingText string
capture_baseline
annotations: none low

Snapshot current terminal state for later diff comparison (screenshot also auto-captures a baseline)

sessionId string
diff_screenshot
annotations: none low

Compare current terminal state against the baseline, return PNG with changed cells highlighted in red

sessionId string
get_cell_info
annotations: none low

Query character, colors, and text attributes at a specific cell or range of cells

col number row number endCol number compact boolean sessionId string
read_scrollback
annotations: none low

Read text that has scrolled above the visible terminal viewport

lines number sessionId string
start_recording
annotations: none low

Begin capturing terminal frames for an animated GIF (frames captured on output, not fixed interval)

sessionId string maxDurationMs number minIntervalMs number
stop_recording
annotations: none low

Stop recording and return the captured frames as an animated GIF. If the GIF exceeds the inline size limit (~4MB), frames are automatically trimmed. If still too large, the GIF is saved to a temp file and the path is returned. Use outputPath to always save to a specific file.

sessionId string outputPath string
read_text
annotations: none low

Read the terminal buffer as plain text (for programmatic assertions instead of visual screenshots)

sessionId string
wait_for_text
annotations: none low

Wait until specific text appears in the terminal buffer (replaces sleep-and-screenshot polling)

text string sessionId string timeoutMs number
wait_for_idle
annotations: none low

Wait until terminal output has been stable for a given duration. Use idleMs (default) for apps that stop producing output, or stableMs for apps with constant output like timers/spinners — stableMs compares buffer content instead of tracking raw PTY data.

idleMs number stableMs number sessionId string timeoutMs number excludePattern string
wait_for_color
annotations: none low

Wait until a specific color appears at a position (or anywhere in the viewport)

col number row number color string sessionId string timeoutMs number
wait_for_exit
annotations: none low

Wait until the process exits and return its exit code and signal

sessionId string timeoutMs number
send_keys
annotations: none low

Send keystrokes to the app (e.g.,

sessionId string
send_text
annotations: none low

Type a string of text into the app

text string sessionId string
get_process_status
annotations: none low

Get the current process status — use to distinguish

sessionId string
list_sessions
annotations: none low

List all active terminal sessions

close
annotations: none low

Kill the app and clean up the session

sessionId string
close_all
annotations: none low

Kill all active sessions at once. Useful for cleanup between test runs or when sessions may have been orphaned.

Permissions 3

filesystem low
Server uses filesystem capabilities via: fs sync ops
shell high
Server uses shell capabilities via: child_process, spawn()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 0

No scan findings.