Skip to main content

CLI for the Elnora AI platform

Project description

Elnora CLI

Command-line interface for the Elnora bioprotocol optimization platform.

License Python

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 --compact projects list

# CSV output
elnora --output csv tasks list

# Select specific fields
elnora --fields "id,name,createdAt" projects list

# Combine options
elnora --output csv --fields "id,title,status" tasks list --project <ID>

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:

  1. ELNORA_API_KEY environment variable
  2. ELNORA_MCP_API_KEY environment variable (alias)
  3. .env file in the nearest project root (directory containing pyproject.toml, package.json, .git, etc.)
  4. ~/.elnora/profiles.toml — active profile (selected by --profile flag or ELNORA_PROFILE env var, default: default)
  5. ~/.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.toml with 600 permissions)
  • Or use environment variables / a gitignored .env file
  • Rotate keys periodically via the Elnora dashboard
  • Run elnora auth logout to 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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elnora-0.7.3.tar.gz (75.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elnora-0.7.3-py3-none-any.whl (49.0 kB view details)

Uploaded Python 3

File details

Details for the file elnora-0.7.3.tar.gz.

File metadata

  • Download URL: elnora-0.7.3.tar.gz
  • Upload date:
  • Size: 75.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for elnora-0.7.3.tar.gz
Algorithm Hash digest
SHA256 8ec58915ef0bc85cce531973d53321b50ed459529f380e2dfe43b6d420fd9d89
MD5 58aa853135f693d8e5a68db27a232871
BLAKE2b-256 157e81c1f93d4d631c0b92c8ea6242f0a0454aebe3e5d6473acf019cff08a6f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for elnora-0.7.3.tar.gz:

Publisher: publish.yml on Elnora-AI/elnora-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file elnora-0.7.3-py3-none-any.whl.

File metadata

  • Download URL: elnora-0.7.3-py3-none-any.whl
  • Upload date:
  • Size: 49.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for elnora-0.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2b2e19de5d8ec578be16760c0221043397916e579abe3dc8f12537419a7f7103
MD5 26c26b9d170b1c417e5ff0796fafaf3d
BLAKE2b-256 3fdc24cb5cc6fa22144f81538f2bd4cccd631395732e59d852d9703415ccbd3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for elnora-0.7.3-py3-none-any.whl:

Publisher: publish.yml on Elnora-AI/elnora-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page