Back to Etu

API Documentation

Etu exposes a Connect RPC API. Use the CLI tool, client packages, or call the proto services directly.

Command Line Interface (CLI)

The Etu CLI is a terminal-based client for managing your journal entries from the command line. It's perfect for quick captures, scripting, and keyboard-centric workflows.

Installation

Via Homebrew (macOS/Linux):

brew tap icco/tap
brew install etu

From source (requires Go 1.25+):

git clone https://github.com/icco/etu
cd etu
go build -o etu .

Configuration

The CLI requires an API key to authenticate with the Etu backend. You can configure it in two ways:

Option 1: Config file (~/.config/etu/config.json)

{ "api_key": "your-64-char-hex-api-key", "grpc_target": "grpc.etu.natwelch.com:443" }

Option 2: Environment variables

export ETU_API_KEY="your-api-key"
export ETU_GRPC_TARGET="grpc.etu.natwelch.com:443"

💡 Get your API key from Settings → API Keys

Available Commands

  • etu create

    Create a new journal entry with an interactive TUI. Supports attaching images and audio files.

  • etu list

    List journal entries with optional starting datetime filter.

  • etu search

    Search journal entries using fuzzy search across content and tags.

  • etu delete

    Delete a journal entry by ID.

  • etu timesince

    Output time elapsed since your last post (useful for scripts and prompts).

Client packages

  • TypeScript / JavaScript
    @icco/etu-proto

    Generated Connect RPC client and types. Published to GitHub Packages.

    Source (etu-backend)
  • Go
    github.com/icco/etu-backend/proto

    Go client and generated code from the same proto definitions.

    etu-backend repository

Authentication

API requests use an API key in the Authorization header. The backend expects the raw key (not Bearer <key>).

  1. Log in at etu.app (or your instance).
  2. Go to Settings → API Keys and create a key. Copy it once—it won’t be shown again.
  3. Send it on every request: Authorization: <your-api-key>

For user-scoped calls (notes, tags, etc.) the backend derives your user from the API key. The web app uses session cookies; the API uses the key only.

Proto reference

Full protocol buffer and service definitions.

Open Proto Documentation