MCPcopy Index your code
hub / github.com/dhth/cueitup

github.com/dhth/cueitup @v1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.0 ↗ · + Follow
437 symbols 1,156 edges 27 files 18 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

cueitup

<a href="https://github.com/dhth/cueitup/actions/workflows/build.yml"><img alt="GitHub release" src="https://img.shields.io/github/actions/workflow/status/dhth/cueitup/build.yml?style=flat-square"></a>
<a href="https://github.com/dhth/cueitup/releases/latest"><img alt="Latest release" src="https://img.shields.io/github/release/dhth/cueitup.svg?style=flat-square"></a>
<a href="https://github.com/dhth/cueitup/releases"><img alt="Commits since latest release" src="https://img.shields.io/github/commits-since/dhth/cueitup/latest?style=flat-square"></a>

cueitup lets you inspect messages in an AWS SQS queue in a simple and deliberate manner. It was built to simplify the process of investigating the contents of messages being pushed to an SNS topic. You can pull one or more messages on demand, peruse through them in a list, and, if needed, persist them to your local filesystem.

tui web interface

Install

homebrew:

brew install dhth/tap/cueitup

go:

go install github.com/dhth/cueitup@latest

Or get the binaries directly from a release. Read more about verifying the authenticity of released artifacts here.

🛠️ Configuration

Create a YAML configuration file that looks like the following. The location of this file depends on your operating system, and can be determined by running cueitup -h.

profiles:
    # a name for a profile; you refer to it when running cueitup
  - name: profile-a #

    # the SQS queue URL
    queue_url: https://sqs.eu-central-1.amazonaws.com/000000000000/queue-a

    # use this to leverage a profile contained in the shared AWS config and credentials files
    # https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html
    aws_config_source: profile:local-profile

    # the format of the message body; possible values: [json, none]
    format: json

  - name: profile-b
    queue_url: https://sqs.eu-central-1.amazonaws.com/000000000000/queue-b
    aws_config_source: env
    format: none

  - name: profile-c
    queue_url: https://sqs.eu-central-1.amazonaws.com/000000000000/queue-c
    aws_config_source: env
    format: json

    # to only show the contents of a nested object
    subset_key: Message

    # cueitup will display this key value pair as "context" in its list
    context_key: aggregateId

⚡️ Usage

cueitup can display messages via two interfaces: a TUI or a webpage

$ cueitup tui --help

open cueitup's TUI

Usage:
  cueitup tui <PROFILE> [flags]

Flags:
  -c, --config-path string   location of cueitup's config file (default "/Users/user/Library/Application Support/cueitup/cueitup.yml")
  -d, --debug                whether to only display config picked up by cueitup
  -D, --delete-messages      whether to start the TUI with the setting "delete messages" ON (default true)
  -h, --help                 help for tui
  -P, --persist-messages     whether to start the TUI with the setting "persist messages" ON
  -M, --show-message-count   whether to start the TUI with the setting "show message count" ON (default true)
  -S, --skip-messages        whether to start the TUI with the setting "skip messages" ON
$ cueitup serve --help

open cueitup's web interface

Usage:
  cueitup serve <PROFILE> [flags]

Flags:
  -c, --config-path string   location of cueitup's config file (default "/Users/user/Library/Application Support/cueitup/cueitup.yml")
  -d, --debug                whether to only display config picked up by cueitup
  -D, --delete-messages      whether to start the web interface with the setting "delete messages" ON (default true)
  -h, --help                 help for serve
  -o, --open                 whether to open web interface in browser automatically
  -S, --select-on-hover      whether to start the web interface with the setting "select on hover" ON
  -M, --show-message-count   whether to start the web interface with the setting "show message count" ON (default true)

Various ways to display JSON messages

Say the messages in your SQS queue look like this.

{
  "browserInfo": {
    "browserName": "Firefox",
    "browserVersion": 118,
    "deviceType": "Desktop",
    "platform": "Linux"
  },
  "isBot": true,
  "metadata": "{\"aggregateId\":\"00000000-0000-0000-0000-000000012363\",\"sequenceNr\":347}",
  "sessionId": "987e6543-b21a-34c5-d678-123456789abc",
  "transactionId": "123e4567-e89b-12d3-a456-426614174000"
}

You can configure cueitup to show a specific key value pair as "context" in its UI. You do do via the context_key configuration property.

- name: sample-profile
  queue_url: ...
  aws_config_source: ...
  format: json
  context_key: transactionId

If you want to only see the nested object under browserInfo, you'd configure a profile like this:

- name: sample-profile
  queue_url: ...
  aws_config_source: ...
  format: json
  subset_key: browserInfo
  context_key: platform

cueitup can also work with stringified JSON.

- name: sample-profile
  queue_url: ...
  aws_config_source: ...
  format: json
  subset_key: metadata
  context_key: aggregateId

TUI Keyboard shortcuts

General

Keymap Description
<tab> Switch focus to next section
<s-tab> Switch focus to previous section
? Show help view
q Go back or quit

Message List Pane

Keymap Description
h/<Up> Move cursor up
k/<Down> Move cursor down
n Fetch the next message from the queue
N Fetch up to 10 more messages from the queue
} Fetch up to 100 more messages from the queue
d Toggle deletion mode; cueitup will delete messages after reading them
M Toggle polling for message count in queue
p Toggle persist mode (messages will be saved to a specific location)
s Toggle skipping mode (consume messages without populating the internal list)

Message Value Pane

Keymap Description
[, h Show details for the previous entry in the list
], l Show details for the next entry in the list

🔐 Verifying release artifacts

In case you get the cueitup binary directly from a release, you may want to verify its authenticity. Checksums are applied to all released artifacts, and the resulting checksum file is signed using cosign.

Steps to verify (replace A.B.C in the commands listed below with the version you want):

  1. Download the following files from the release:

    • cueitup_A.B.C_checksums.txt
    • cueitup_A.B.C_checksums.txt.pem
    • cueitup_A.B.C_checksums.txt.sig
  2. Verify the signature:

shell cosign verify-blob cueitup_A.B.C_checksums.txt \ --certificate cueitup_A.B.C_checksums.txt.pem \ --signature cueitup_A.B.C_checksums.txt.sig \ --certificate-identity-regexp 'https://github\.com/dhth/cueitup/\.github/workflows/.+' \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com"

  1. Download the compressed archive you want, and validate its checksum:

shell curl -sSLO https://github.com/dhth/cueitup/releases/download/vA.B.C/cueitup_A.B.C_linux_amd64.tar.gz sha256sum --ignore-missing -c cueitup_A.B.C_checksums.txt

  1. If checksum validation goes through, uncompress the archive:

shell tar -xzf cueitup_A.B.C_linux_amd64.tar.gz ./cueitup # profit!

Acknowledgements

cueitup is built using the TUI framework bubbletea.

Core symbols most depended-on inside this repo

toList
called by 146
internal/server/_client/priv/static/cueitup.mjs
class$
called by 39
internal/server/_client/priv/static/cueitup.mjs
prepend
called by 29
internal/server/_client/priv/static/cueitup.mjs
isOk
called by 22
internal/server/_client/priv/static/cueitup.mjs
append
called by 22
internal/server/_client/priv/static/cueitup.mjs
div
called by 22
internal/server/_client/priv/static/cueitup.mjs
hasLength
called by 18
internal/server/_client/priv/static/cueitup.mjs
none
called by 17
internal/server/_client/priv/static/cueitup.mjs

Shape

Function 337
Method 67
Struct 16
Class 14
TypeAlias 3

Languages

TypeScript81%
Go19%

Modules by API surface

internal/server/_client/priv/static/cueitup.mjs353 symbols
internal/types/types.go23 symbols
internal/types/config.go15 symbols
internal/ui/msgs.go6 symbols
internal/ui/cmds.go6 symbols
internal/server/fetch.go5 symbols
internal/server/assets.go5 symbols
internal/ui/model.go3 symbols
tests/cli/config_test.go2 symbols
internal/utils/trim.go2 symbols
internal/server/utils.go2 symbols
cmd/root.go2 symbols

For agents

$ claude mcp add cueitup \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact