Anytype.rs - Rust API Client and CLI for Interacting with Anytype
A Rust library and CLI tool for interacting with your local Anytype application via its API.
THIS IS CURRENTLY ALL VIBE CODED AND SHOULD NOT BE TRUSTED. It is not comprehensive and I wouldn't run it on any spaces you care about. It will be improved over time, but for now, it is just a starting point. Created with Claud Sonnet 4 (Preview) in GitHub Copilot.
Overview
This project provides a Rust interface to interact with Anytype's local API server, which runs in your Anytype app at http://localhost:31009. It's a single crate that provides both a library for programmatic access and a command-line interface for direct usage.
You can download the crate from crates.io.
Project Structure
This is a single crate with two main modules:
src/api/: Core library for interacting with the Anytype APIsrc/cli/: Command-line interface that uses the API module
There is also a tests directory for integration tests that cover both the library and CLI functionality, but they're all vibe coded right now and probably useless.
Features
This project provides bindings to the Anytype API and a CLI tool to interact with it. See the sections below for current state of the API implementation.
The following lists the currently implemented endpoints for the 2025-05-20 API version.
The ✅ means it's been vibe coded. I still need to go through and verify each of the ✅ endpoints, but the basics are there. They might be missing some functionality but the basics worked.
❌ means it has not been implemented yet in any fashion.
Authentication
- ✅ Create API key
- ✅ Create challenge
Search
- ✅ Search objects across all spaces
- ✅ Search objects within a space
Spaces
- ✅ List spaces
- ✅ Create space
- ✅ Get space
- ✅ Update space
Lists
- ✅ Add objects to list
- ✅ Remove objects from list
- ✅ Get list views
- ✅ Get objects in list
Members
- ✅ List members
- ✅ Get member
Objects
- ✅ List objects
- ✅ Create object
- ✅ Delete object
- ✅ Get object
- ✅ Update object
Properties
- ✅ List properties
- ✅ Create property
- ✅ Delete property
- ✅ Get property
- ✅ Update property
Tags
- ✅ List tags
- ✅ Create tag
- ✅ Delete tag
- ✅ Get tag
- ✅ Update tag
Types
- ✅ List types
- ✅ Create type
- ✅ Delete type
- ✅ Get type
- ✅ Update type
Templates
- ✅ List templates
- ✅ Get template
Installation
Prerequisites
- Rust 1.87.0 or later (may work on earlier versions, but not tested)
- Anytype application running locally
Build from Source
The CLI binary will be available at target/release/anytype.
Install from Cargo
This will install the anytype binary to your Cargo bin directory.
Usage
Command-Line Interface
The CLI provides a way to interact with the available Anytype API endpoints directly from the terminal.
Use the --help flag to see the available commands and how to use them.
Library Usage
Install the library from Crates.io by adding anytype_rs to your Cargo.toml.
Local Development
This client is designed to work with your local Anytype application. Make sure:
- Anytype is running: The Anytype desktop application must be running on your machine
- API Server is active: The local API server should be accessible at
http://localhost:31009 - Authentication: You'll need to authenticate through the challenge-response flow
Checking Your Local Setup
You can verify your local Anytype API is accessible by running the authentication status command:
# Or use the CLI to check status
Configuration
The CLI stores configuration in your system's standard config directory:
- Linux:
~/.config/anytype-cli/ - macOS:
~/Library/Application Support/anytype-cli/ - Windows:
%APPDATA%\\anytype-cli\\
API keys are stored securely in this directory.
Development
Running Tests
Enable Debug Logging
# For the CLI
# For library development
RUST_LOG=debug