CLI for the Elnora AI platform
Project description
Elnora CLI
Command-line interface for the Elnora bioprotocol optimization platform.
What is Elnora?
Elnora is an AI-powered platform that helps researchers generate, optimize, and manage bioprotocols for wet-lab experiments. This CLI lets you interact with Elnora from your terminal or integrate it into scripts and automation pipelines.
Quick Start
Install
# Install with uv (recommended)
uv tool install elnora
# Or with pip
pip install elnora
Authenticate
elnora auth login
This prompts for your API key (get one from platform.elnora.ai > Settings > API Keys), verifies it, and saves it to ~/.elnora/profiles.toml.
Alternatively, set an environment variable:
export ELNORA_API_KEY=your_api_key
Multi-Org Setup
If you belong to multiple organizations, save a separate API key per org as a named profile:
elnora auth login --profile university
elnora auth login --profile work
# Use a specific profile
elnora --profile university projects list
# List all profiles
elnora auth profiles
Verify
elnora auth status
Usage
Projects
# List projects
elnora projects list
# Get a specific project
elnora projects get <PROJECT_ID>
# Create a project
elnora projects create --name "My Protocol Library"
Tasks
# List all tasks
elnora tasks list
# List tasks in a project
elnora tasks list --project <PROJECT_ID>
# Create a task
elnora tasks create --project <PROJECT_ID> --title "Generate HEK 293 protocol"
# Send a message to a task
elnora tasks send <TASK_ID> --message "Optimize for 6-well plates"
# Get task messages
elnora tasks messages <TASK_ID>
# Update a task
elnora tasks update <TASK_ID> --status completed
# Archive a task
elnora tasks archive <TASK_ID>
Files
# List files in a project
elnora files list --project <PROJECT_ID>
# Get file metadata
elnora files get <FILE_ID>
# Get file content
elnora files content <FILE_ID>
# Get file version history
elnora files versions <FILE_ID>
Search
# Search tasks
elnora search tasks --query "HEK 293"
# Search files
elnora search files --query "transfection protocol"
Health Check
# Check if the Elnora platform is reachable
elnora health
Global Options
| Option | Description |
|---|---|
--profile |
Named profile to use (default: default) |
--compact |
Token-efficient minimal JSON output |
--output json|csv |
Output format (default: json) |
--fields |
Comma-separated fields to include in output |
--version |
Show version |
--help |
Show help |
Examples
# Compact JSON for piping
elnora projects list --compact
# CSV output
elnora tasks list --output csv
# Select specific fields
elnora projects list --fields "id,name,createdAt"
# Combine options
elnora tasks list --project <ID> --output csv --fields "id,title,status"
Shell Completions
# Bash
elnora completion bash >> ~/.bashrc
# Zsh
elnora completion zsh >> ~/.zshrc
# Fish
elnora completion fish > ~/.config/fish/completions/elnora.fish
Output Format
All commands output structured JSON to stdout on success and structured JSON errors to stderr on failure.
Success (exit 0):
{
"items": [...],
"totalCount": 42,
"page": 1,
"pageSize": 25
}
Error (typed exit codes):
{
"error": "Invalid project_id: 'abc'. Expected UUID format.",
"code": "VALIDATION_ERROR",
"suggestion": "Run: elnora projects list"
}
| Exit Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General / unexpected error |
| 2 | Validation error (bad input) |
| 3 | Authentication error |
| 4 | Not found |
| 5 | Rate limited |
| 6 | Server error |
This makes the CLI easy to integrate with jq, scripts, and AI agents.
Authentication
The CLI resolves API keys in this order:
ELNORA_API_KEYenvironment variableELNORA_MCP_API_KEYenvironment variable (alias).envfile in the nearest project root (directory containingpyproject.toml,package.json,.git, etc.)~/.elnora/profiles.toml— active profile (selected by--profileflag orELNORA_PROFILEenv var, default:default)~/.elnora/config.toml(legacy fallback)
Existing config.toml credentials are automatically migrated to profiles.toml on first use.
Security best practices:
- Never commit API keys to version control
- Use
elnora auth login(saves to~/.elnora/profiles.tomlwith 600 permissions) - Or use environment variables / a gitignored
.envfile - Rotate keys periodically via the Elnora dashboard
- Run
elnora auth logoutto remove saved credentials
Development
# Clone the repo
git clone https://github.com/Elnora-AI/elnora-cli.git
cd elnora-cli
# Install in development mode
uv sync
# Run the CLI
uv run elnora --help
# Run tests
uv run pytest
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
AUTH_FAILED |
Missing or invalid API key | Run elnora auth login or set ELNORA_API_KEY env var |
VALIDATION_ERROR |
Invalid UUID format | Check the ID — use elnora <resource> list to find valid IDs |
NOT_FOUND |
Resource doesn't exist | Verify the ID with elnora <resource> list |
RATE_LIMITED |
Too many requests | Wait a moment and retry |
NETWORK_ERROR |
Can't reach Elnora API | Check your internet connection |
SERVER_ERROR |
Elnora API issue | Try again later; contact support@elnora.ai if persistent |
Claude Code Plugin
This package includes a Claude Code plugin with built-in skills that teach Claude how to use every CLI command. Skills are bundled with the package — no separate installation needed.
When Claude Code detects the Elnora CLI, it automatically gets access to command syntax, pagination patterns, error handling, and agent-optimized recipes.
Example
Tell Claude: "Create a new Elnora project called PCR Library and generate a BRCA1 protocol"
Claude will run the right sequence of CLI commands automatically.
Related
- Elnora MCP Server — Connect AI agents to Elnora via the Model Context Protocol
- Elnora Platform — Web application
Security
We take security seriously. If you discover a vulnerability, please report it responsibly — see our security policy.
Changelog
See CHANGELOG.md for version history.
Contributing
See CONTRIBUTING.md for contribution guidelines.
License
This project is licensed under the Apache License 2.0.
Support
- Bug reports and feature requests: GitHub Issues
- Account and billing questions: support@elnora.ai
- Security vulnerabilities: security@elnora.ai
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file elnora-0.7.1.tar.gz.
File metadata
- Download URL: elnora-0.7.1.tar.gz
- Upload date:
- Size: 78.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f835e3dfd5fcd8b4aa19c84d842b36479080846ac0b2773aa7a2abfda8475cdf
|
|
| MD5 |
4ae85b6b5a3b433667bc214d9e4827b8
|
|
| BLAKE2b-256 |
b99c966ea8968a377def76dcbe33a28511681efd404cc7d493574dce2cecb43f
|
Provenance
The following attestation bundles were made for elnora-0.7.1.tar.gz:
Publisher:
publish.yml on Elnora-AI/elnora-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elnora-0.7.1.tar.gz -
Subject digest:
f835e3dfd5fcd8b4aa19c84d842b36479080846ac0b2773aa7a2abfda8475cdf - Sigstore transparency entry: 1097659459
- Sigstore integration time:
-
Permalink:
Elnora-AI/elnora-cli@d67b53addf0423860da4dc99dfd805830498c9f0 -
Branch / Tag:
refs/tags/elnora-v0.7.1 - Owner: https://github.com/Elnora-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d67b53addf0423860da4dc99dfd805830498c9f0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file elnora-0.7.1-py3-none-any.whl.
File metadata
- Download URL: elnora-0.7.1-py3-none-any.whl
- Upload date:
- Size: 47.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d34b09f43392246a250e2272e8435e0175ca7375a3ead6eea4e387033435dd07
|
|
| MD5 |
7608ae459ca0d758557bce8da6de3306
|
|
| BLAKE2b-256 |
2656b8e79a4ddee502675751619094da0dcf2f6500755bdde30c60e23c847e19
|
Provenance
The following attestation bundles were made for elnora-0.7.1-py3-none-any.whl:
Publisher:
publish.yml on Elnora-AI/elnora-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elnora-0.7.1-py3-none-any.whl -
Subject digest:
d34b09f43392246a250e2272e8435e0175ca7375a3ead6eea4e387033435dd07 - Sigstore transparency entry: 1097659496
- Sigstore integration time:
-
Permalink:
Elnora-AI/elnora-cli@d67b53addf0423860da4dc99dfd805830498c9f0 -
Branch / Tag:
refs/tags/elnora-v0.7.1 - Owner: https://github.com/Elnora-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d67b53addf0423860da4dc99dfd805830498c9f0 -
Trigger Event:
release
-
Statement type: