List, search, and manipulate anytype objects from the command-line
Homepage: https://github.com/stevelr/anytype
# show options
anyr --help
# check authentication status (HTTP + gRPC)
anyr auth status
# authenticate with desktop and http endpoint
anyr auth login
# List spaces your user is authorized to access
anyr space list -t # output as table (-t/--table)
# Count or delete archived objects in a space
anyr space count-archived "Work"
anyr space delete-archived "Work" [ --confirm ]
# List Pages in space "Work"
anyr object list "Work" --type page -t
# List Files in a space (requires gRPC credentials)
anyr file list "Personal" -t
# Download/upload file bytes
# use `--dir DIR` to set download dir, or `--file PATH` for destination file path
anyr file download <FILE_OBJECT_ID> --dir /tmp
anyr file upload "Personal" -f ./path/to/file.png
# Create a chat in a regular space
anyr chat create "Work" "Ops"
# Get chat messages from a chat in a space
anyr chat messages list "Work" "Ops" -t
# Post message
anyr chat messages send "Work" "Ops" --text "hello world?"These options apply to most commands.
| Category | Args | Description | Environment default |
-h, --help |
show context-specific help | ||
| Server endpoints | --url URL |
HTTP endpoint. Default: http://127.0.0.1:31009 |
ANYTYPE_URL |
--grpc URL |
gRPC endpoint. Default: http://127.0.0.1:31010 |
ANYTYPE_GRPC_ENDPOINT | |
| Key storage | --keystore SPEC |
keystore spec, e.g., "file" | ANYTYPE_KEYSTORE |
--keystore-service SVC |
service name, usually the app name | ANYTYPE_KEYSTORE_SERVICE | |
| Output formatting | --json |
json formatted output (the default) | |
--pretty |
json pretty-printed output | ||
-t, --table |
table format | ||
--date-format |
format for date columns (strftime) Default "%Y-%m-%d %H:%M:%S" |
ANYTYPE_DATE_FORMAT | |
| Search and list filters | --filter KEY=VALUE |
apply filter condition(s) | |
--type TYPE |
apply type constraint(s) | ||
--sort KEY |
sort on key | ||
--desc |
sort descending |
List objects in a space
# List <ENTITY> in a space. (entities: object, member, property, template)
# anyr <ENTITY> list <SPACE_ID_OR_NAME>
# list objects in space 'Personal'
anyr object list "Personal" -t
# list types in space 'Personal'
anyr type list "Personal" -tSearch in space
# search space "Work" for tasks containing the text "customer"
anyr search --space "Work" --type Task --text customer -tArchived object cleanup
space="Work"
anyr space count-archived "$space"
anyr space delete-archived "$space" --confirmList tasks in space
space="Work" # specify space using name or id
for task in `anyr search --type Task --space $space --json | jq -r '.items[] | .id`; do
data=$(anyr object get $space $task --json)
status=$(jq -r '.properties[] | select (.key=="status") .select.name' <<< "$data")
name=$(jq -r '.name' <<< "$data")
# get created_date as YYYY-MM-DD
created_date=$(jq -r '.properties[] | select (.key=="created_date") .date' <<< "$data" | sed 's/T.*$//')
# generate formatted table with date, status, and name
printf "%10s %-12s %s" $created_date $status $name
doneFind files
# list images in space Personal, larger than 1MB with a name containing "report"
anyr file list "Personal" --type image --size-gte 1048576 --name-contains report -t
# list pdf or docx files in space Personal
anyr file list "Personal" --ext-in pdf,docx -tList items in query or collection
# list queries in space. "$space" can be id ("bafy...") or name ("Projects")
anyr search --type set --space $space -t
# list collections in the space
anyr search --type collection --space $space -t
# from above, get id of query or collection of interest, then
# list items in query or collection, in view "All"
anyr view objects --view All $space $query_or_collection_id -tGet objects from a collection list or grid view
# show names of all tasks in space "Work", using view 'All'
anyr view objects --view All "Work" Task -t
# show columns: Name, Created By, and Status (note: column names are specified by property_key)
anyr view objects --view All "Work" Task --cols name,creator,status
# get tasks from view ByProject in json, with all properties
anyr view objects --view ByProject "Work" Task --jsonIf you have a list or grid formatted view, you can use view objects to list the view items by specifying the space name, list, and view.
- Results are filtered and sorted by the criteria in the view.
- View can be specified by the view id or view name.
- The --json and --pretty format outputs include all properties of the objects.
Table listing features for view objects:
- Table listing defaults to name column only. Specify columns in table output with
--cols/--columnsand a comma-separated list of property keys. Example--cols name,creator,created_date,status - Format dates with strftime format:
--date-formatorANYTYPE_DATE_FORMAT, defaults to%Y-%m-%d %H:%M:%S. - Members names are displayed instead of member id.
Chat order ids
Chat message order ids are converted to lowercase hex before display in table-format output, to make them easier to read and type, while preserving lexicographic order. Any argument that accepts an order id also accepts the hex form. Example: the order id !!@, is displayed as 2121402c, and you can pass 2121402c back to commands that accept an order id.
Release binaries are on github
Macos via Homebrew
brew install stevelr/tap/anyrLinux (arm64/x86_64)
curl -fsSL https://github.com/stevelr/anytype/releases/latest/download/anyr-installer.sh | shWindows Powershell
irm https://github.com/stevelr/anytype/releases/latest/download/anyr-installer.ps1 | iexCargo
cargo install -p anyrCargo
Requirements:
- protoc (from the protobuf package) in your PATH. On macos,
brew install protobuf - libgit2 in your library path.
cargo install -p anyrNix
nix buildConfiguration can be set with command-line parameters or environment variables.
-
Url The default url is the desktop client
http://127.0.0.1:31009. Override with--urlor the environment variableANYTYPE_URL. -
Key Storage The default key storage method should work on most platforms. Options for overriding the defaults are described below in Key storage.
# use headless server and custom key path
anyr --url "http://127.0.0.1:31012" --keystore "file:path=$HOME/.config/anytype/apikeys.db" ARGS ...`
# custom endpoint url and key path in environment
export ANYTYPE_URL=http://127.0.0.1:31012
export ANYTYPE_KEYSTORE="file:path=$HOME/.config/anytype/apikeys.db"
anyr ARGS ...-
Desktop: If the Anytype desktop app is running, type
anyr auth loginand the app will display a 4-digit code. Enter the code into the anyr prompt, and a key is generated and stored in the KeyStore. -
Headless server: If you are using the headless cli server, start the server, run
anytype auth apikey create anyrto generate and display a key, then either:- paste it into
anyr auth set-http(reads from stdin), or - save it in a file and set the key file path as described in Key storage.
- paste it into
See anytype README.md for more info, and the helper script init-cli-keys.sh for generating and saving http and gRPC credentials.
Debug logging
RUST_LOG=debug anyr space list -tLog HTTP requests and responses:
RUST_LOG=warn,anytype::http_json=trace anyr space list -tPython CLI tests expect the same environment variables as the API tests:
ANYTYPE_TEST_URL(orANYTYPE_URL)ANYTYPE_TEST_KEY_FILE(orANYTYPE_KEY_FILE)ANYTYPE_TEST_SPACE_ID
source .test-env
python tests/cli_commands.pyApache License, Version 2.0