Skip to main content

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

--workspace <id>
string
Filter by workspace ID
--search <query>
string
Substring match against person name
--bio <text>
string
Substring match against person bio
--occupation <text>
string
Substring match against person occupation (repeatable) Default: [].
--type <type>
string
Person type: ai, human, all (default: ai) Default: “ai”.
--gender <gender>
string
Filter by gender (repeatable) Default: [].
--country <country>
string
Filter by country code, e.g. US (repeatable) Default: [].
--min-age <n>
string
Minimum age
--max-age <n>
string
Maximum age
--visibility <v>
string
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)
--limit <n>
string
Max results (default 50) Default: “50”.
--offset <n>
string
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

--file <path>
string
JSON file with person data (or ’-’ for stdin). Escape hatch for fields not covered by inline flags.
--name <text>
string
Person name (required if —file omitted)
--type <value>
string
Person type: ai | human (default: ai when —file omitted)
--description <text>
string
Person description
--bio <text>
string
Person bio
--occupation <text>
string
Occupation
--country <code>
string
Country code, e.g. US
--gender <g>
string
Gender, e.g. female
--date-of-birth <YYYY-MM-DD>
string
Date of birth
--education-level <value>
string
Education level. One of: less_than_secondary, secondary, some_post_secondary, vocational_or_associate, bachelor, graduate
--household <value>
string
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.
--locale-type <value>
string
Self-described neighborhood type. One of: urban, suburban, small_town, rural
--income-level <value>
string
Self-identified relative socioeconomic position. One of: lower, lower_middle, middle, upper_middle, upper, prefer_not_to_say
--employment-status <value>
string
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
--accessibility-profile <json-or-path>
string
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>
string
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 <text>
string
Description / researcher brief (use @path to read from file)
--description-file <path>
string
Read description from a file
--source <id-or-path>
string
Source UUID or local file path; auto-uploads paths (repeatable) Default: [].
--source-description <text>
string
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: [].
--diarize
boolean
Apply speaker diarization to audio sources (silently ignored for text/image)
--count <n>
string
Number of people to generate (1-10). Omit to let the model propose a count
--propose-count
boolean
Print the LLM’s suggested count for a single processed source and exit (no generation)
--workspace <id>
string
Workspace (product) ID; falls back to active workspace
--no-scenarios
boolean
Skip fetching the evidence-grounded scenarios for each generated person
--no-wait
boolean
Don’t poll source-processing status. Only relevant when —source is a local path (paths get auto-uploaded and processed).
--source-timeout <seconds>
string
Source-processing poll timeout in seconds. Only relevant when —source is a local path. Default: “300”.
--timeout <seconds>
string
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>
string
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

--file <path>
string
JSON file with update data (escape hatch for fields not covered by inline flags)
--name <text>
string
Person name
--description <text>
string
Person description
--bio <text>
string
Person bio
--occupation <text>
string
Occupation
--country <code>
string
Country code, e.g. US
--gender <g>
string
Gender, e.g. female
--date-of-birth <YYYY-MM-DD>
string
Date of birth
--education-level <value>
string
Education level. One of: less_than_secondary, secondary, some_post_secondary, vocational_or_associate, bachelor, graduate
--household <value>
string
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.
--locale-type <value>
string
Self-described neighborhood type. One of: urban, suburban, small_town, rural
--income-level <value>
string
Self-identified relative socioeconomic position. One of: lower, lower_middle, middle, upper_middle, upper, prefer_not_to_say
--employment-status <value>
string
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
--accessibility-profile <json-or-path>
string
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>
string
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>
string
Workspace ID; accepted for consistency (workspace is inferred from the person)
-y, --yes
boolean
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 <id>
string
Workspace (product) ID; falls back to active workspace
--context <text>
string
What you already know about this participant. Use @path to read from file.
--context-file <path>
string
Read —context from a file
--count <n>
string
Number of scenarios to return (1-10, default 5)
--previous-answers <json-or-@path>
string
Answers already collected this session. Inline JSON, @/path/to.json, or - for stdin. Array of {type, prompt, answer}; max 40.
--already-surfaced <json-or-@path>
string
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

--traces <json-or-@path>
string
Array of {text, source, scenario_prompt?, raw_response?} where source ∈ situation|voice|binary|micro-story. Inline JSON, @/path/to.json, or - for stdin.
--traces-file <path>
string
Read —traces from a JSON file
--workspace <id>
string
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>
string
Workspace ID; accepted for consistency (inferred from alias / active context)

Global flags

Every command accepts the global flags.
-V, --version
boolean
output the version number
-t, --token <token>
string
Auth token (or set ISH_TOKEN env var)
--token-file <path>
string
Read auth token from a file (preferred over —token / ISH_TOKEN)
--workspace <id>
string
Default workspace ID; per-subcommand —workspace overrides
--json
boolean
Output as JSON (auto-enabled when piped)
--get <field>
string
Extract a single field from the JSON response and print only its value (implies —json internally; supports dotted paths e.g. person.name)
--human
boolean
Force human-readable output even when stdout is piped (overrides JSON-when-piped auto-detection)
--fields <fields>
string
Comma-separated fields to include in JSON output (e.g. alias,name,status)
--verbose
boolean
Include full UUIDs and timestamps in JSON output
--no-color
boolean
Disable colored output (also honored: NO_COLOR env var)
-q, --quiet
boolean
Suppress progress messages on stderr (no-op for read commands that emit none)