A command-line interface for interacting with Anytype. This CLI embeds anytype-heart as the server, making it a complete, self-contained solution for developers to work with a headless Anytype instance.
Install the latest release with a single command:
/usr/bin/env bash -c "$(curl -fsSL https://raw.githubusercontent.com/anyproto/anytype-cli/HEAD/install.sh)"Important
The headless middleware requires a dedicated bot account, which you create using anytype auth create. This process generates an account key for authentication - mnemonic-based login is not supported. The bot account only has access to spaces it explicitly joins, keeping your data isolated and allowing you to easily revoke its access at any time from the desktop app.
Get up and running in just a few commands:
# Run the Anytype server anytype serve # Or install as a user service anytype service install anytype service start # Create a new bot account anytype auth create <name> # Join a space via invite link anytype space join <invite-link> # Verify the space was joined anytype space list # Create an API key for programmatic access anytype auth apikey create "my-bot-api-key"
Once running, the API is available at http://127.0.0.1:31012. Use your API key to authenticate requests to the endpoints described on the Developer Portal. See Network Configuration for remote access options.
anytype <command> <subcommand> [flags]
Commands:
auth Manage authentication and accounts
serve Run anytype in foreground
service Manage anytype as a user service
shell Start interactive shell mode
space Manage spaces
update Update to the latest version
version Show version information
Examples:
anytype serve # Run in foreground
anytype service install # Install as user service
anytype service start # Start the service
anytype auth login # Log in to your account
anytype auth create <name> # Create a new account
anytype space list # List all available spaces
Use "anytype <command> --help" for more information about a command.
The CLI embeds anytype-heart as the server that can be run in two ways:
anytype serve
This runs the server in the foreground with logs output to stdout, similar to ollama serve.
# Install as user service anytype service install # Start the service anytype service start # Check service status anytype service status # Stop the service anytype service stop # Uninstall the service anytype service uninstall
The service management works across platforms:
- macOS: Uses User Agent (launchd)
- Linux: Uses systemd user service
- Windows: Uses Windows User Service
By default, the server binds to 127.0.0.1 (localhost only) on ports 31010-31012 and is not accessible from other machines. These ports are intentionally different from the Anytype desktop app (which uses 31007-31009), allowing both to run simultaneously on the same machine. Port 31012 is the main API endpoint used for HTTP requests.
| Port | Service | Description |
|---|---|---|
| 31010 | gRPC | gRPC server endpoint |
| 31011 | gRPC-Web | gRPC-Web server endpoint |
| 31012 | API | HTTP API server endpoint ⭐ |
You can change the API listen address using --listen-address (e.g., --listen-address 0.0.0.0:31012). For remote access, you can also use a reverse proxy, SSH tunnel, or Docker port mapping to expose the local ports.
Security note: Always keep your API keys safe. If ports are exposed externally, third parties with your API key could gain unauthorized access to the spaces your headless instance has access to.
Manage your Anytype account and authentication:
# Create a new account anytype auth create <name> # Log in to your account anytype auth login # Check authentication status anytype auth status # Log out and clear stored credentials anytype auth logout
Manage API keys for programmatic access:
# Create a new API key anytype auth apikey create <name> # List all API keys anytype auth apikey list # Revoke an API key anytype auth apikey revoke <key-id>
Work with Anytype spaces:
# List all available spaces anytype space list # Join a space anytype space join <invite-link> # Leave a space anytype space leave <space-id>
anytype-cli/
├── cmd/ # CLI commands
│ ├── auth/ # Authentication commands
│ ├── serve/ # Server command
│ ├── service/ # Service management
│ ├── space/ # Space management
│ └── ...
├── core/ # Core business logic
│ ├── grpcserver/ # Embedded gRPC server (anytype-heart)
│ ├── serviceprogram/ # Service implementation
│ └── ...
└── dist/ # Build output
- Go 1.25 or later
- Git
- Make
- C compiler (gcc or clang, for CGO)
# Clone the repository git clone https://github.com/anyproto/anytype-cli.git cd anytype-cli # Build the CLI (automatically downloads tantivy library) make build # Install to ~/.local/bin make install # Run tests go test ./... # Run linting make lint # Cross-compile for all platforms make cross-compile
# Remove installation from ~/.local/bin
make uninstallThank you for your desire to develop Anytype together!
❤️ This project and everyone involved in it is governed by the Code of Conduct.
🧑💻 Check out our contributing guide to learn about asking questions, creating issues, or submitting pull requests.
🫢 For security findings, please email security@anytype.io and refer to our security guide for more information.
🤝 Follow us on Github and join the Contributors Community.
Made by Any — a Swiss association 🇨🇭
Licensed under MIT.