ish person list
List people (defaults to AI people in your workspace; pass —visibility platform for the shared pool)
Usage: ish person list [options]
Options
Filter by workspace ID
Substring match against person name
Substring match against person bio
Substring match against person occupation (repeatable) Default: [].
Person type: ai, human, all (default: ai) Default: “ai”.
Filter by gender (repeatable) Default: [].
Filter by country code, e.g. US (repeatable) Default: [].
Minimum age
Maximum age
Filter by visibility: workspace (your own people - the DEFAULT) | shared (community-published) | platform (the full shared pool, ~13.6k) (legacy ‘private’/‘public’ accepted as aliases)
Max results (default 50) Default: “50”.
Offset for pagination Default: “0”.
ish person create
Create a person from an exact JSON spec (no LLM). Accepts inline flags or —file.
Usage: ish person create [options]
Options
JSON file with person data (or ’-’ for stdin). Escape hatch for fields not covered by inline flags.
Person name (required if —file omitted)
Person type: ai | human (default: ai when —file omitted)
Person description
Person bio
Occupation
Country code, e.g. US
Gender, e.g. female
Date of birth
Education level. One of: less_than_secondary, secondary, some_post_secondary, vocational_or_associate, bachelor, graduate
Household composition (MECE). One of: single, couple_no_kids, couple_with_kids, single_parent, shared_housing, adult_with_parents, multi_generational. A couple raising children is couple_with_kids, not couple_no_kids; “single” means lives alone with no partner, roommates, parents, or children in the household.
Self-described neighborhood type. One of: urban, suburban, small_town, rural
Self-identified relative socioeconomic position. One of: lower, lower_middle, middle, upper_middle, upper, prefer_not_to_say
Primary daytime activity / labor-force status. One of: employed_full_time, employed_part_time, self_employed, unemployed_seeking, student, homemaker, retired, unable_to_work, other
AccessibilityProfile v1.0 as an inline JSON string OR a path to a JSON file. Empty object {} is the canonical default. Validated client-side against the spec before submit.
Workspace (product) ID; falls back to active workspace
ish person generate
Generate people plus evidence-grounded scenarios from a brief and/or sources
Usage: ish person generate [options]
Options
Description / researcher brief (use @path to read from file)
Read description from a file
Source UUID or local file path; auto-uploads paths (repeatable) Default: [].
Per-source researcher note - how the person reacted to THAT file. Paired with —source by index (repeatable). Only applies to local-path sources; for already-uploaded aliases the note is whatever was set at upload time. Default: [].
Apply speaker diarization to audio sources (silently ignored for text/image)
Number of people to generate (1-10). Omit to let the model propose a count
Print the LLM’s suggested count for a single processed source and exit (no generation)
Workspace (product) ID; falls back to active workspace
Skip fetching the evidence-grounded scenarios for each generated person
Don’t poll source-processing status. Only relevant when —source is a local path (paths get auto-uploaded and processed).
Source-processing poll timeout in seconds. Only relevant when —source is a local path. Default: “300”.
Generation-job poll timeout in seconds (default 180; pass a larger value for long-running jobs). The job keeps running server-side past this; re-poll later or re-run with a longer —timeout - don’t re-enqueue, that would duplicate the work. Default: “180”.
ish person get
Get person details (accepts multiple IDs for batched lookup)
Usage: ish person get <ids>... [options]
Arguments
ids
Person ID(s) - one or more aliases/UUIDs (space- or comma-separated) (required, variadic)
Options
Workspace ID; accepted for consistency (inferred from alias / active context)
ish person update
Update a person
Usage: ish person update <id> [options]
Arguments
id
Person ID (required)
Options
JSON file with update data (escape hatch for fields not covered by inline flags)
Person name
Person description
Person bio
Occupation
Country code, e.g. US
Gender, e.g. female
Date of birth
Education level. One of: less_than_secondary, secondary, some_post_secondary, vocational_or_associate, bachelor, graduate
Household composition (MECE). One of: single, couple_no_kids, couple_with_kids, single_parent, shared_housing, adult_with_parents, multi_generational. A couple raising children is couple_with_kids, not couple_no_kids; “single” means lives alone with no partner, roommates, parents, or children in the household.
Self-described neighborhood type. One of: urban, suburban, small_town, rural
Self-identified relative socioeconomic position. One of: lower, lower_middle, middle, upper_middle, upper, prefer_not_to_say
Primary daytime activity / labor-force status. One of: employed_full_time, employed_part_time, self_employed, unemployed_seeking, student, homemaker, retired, unable_to_work, other
AccessibilityProfile v1.0 as an inline JSON string OR a path to a JSON file. Empty object {} is the canonical default. Validated client-side against the spec before submit.
Workspace ID; accepted for consistency (inferred from alias / active context)
ish person delete
Delete a person
Usage: ish person delete <id> [options]
Arguments
id
Person ID (required)
Options
Workspace ID; accepted for consistency (workspace is inferred from the person)
Skip confirmation prompt (required in —json or non-TTY contexts)
ish person suggest-scenarios
Ask the LLM for scenario probes to craft a specific simulated person
Usage: ish person suggest-scenarios [options]
Options
Workspace (product) ID; falls back to active workspace
What you already know about this participant. Use @path to read from file.
Read —context from a file
Number of scenarios to return (1-10, default 5)
Answers already collected this session. Inline JSON, @/path/to.json, or - for stdin. Array of {type, prompt, answer}; max 40.
Prompt labels already shown this session, so the LLM avoids paraphrasing them. Inline JSON, @/path, or -. Array of strings; max 40.
ish person evidence
Manage scenario-answer evidence on a person
Usage: ish person evidence
ish person evidence add
Persist scenario answers as structured evidence on a person
Usage: ish person evidence add <id> [options]
Arguments
id
Person ID (alias or UUID) (required)
Options
Array of {text, source, scenario_prompt?, raw_response?} where source ∈ situation|voice|binary|micro-story. Inline JSON, @/path/to.json, or - for stdin.
Read —traces from a JSON file
Workspace ID; accepted for consistency (inferred from alias / active context)
ish person evidence list
List evidence traces persisted on a person (newest first)
Usage: ish person evidence list <id> [options]
Arguments
id
Person ID (alias or UUID) (required)
Options
Workspace ID; accepted for consistency (inferred from alias / active context)
Global flags
Every command accepts the global flags.output the version number
Auth token (or set ISH_TOKEN env var)
Read auth token from a file (preferred over —token / ISH_TOKEN)
Default workspace ID; per-subcommand —workspace overrides
Output as JSON (auto-enabled when piped)
Extract a single field from the JSON response and print only its value (implies —json internally; supports dotted paths e.g. person.name)
Force human-readable output even when stdout is piped (overrides JSON-when-piped auto-detection)
Comma-separated fields to include in JSON output (e.g. alias,name,status)
Include full UUIDs and timestamps in JSON output
Disable colored output (also honored: NO_COLOR env var)
Suppress progress messages on stderr (no-op for read commands that emit none)