Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Overview

A screenshot enbas running inside tmux

enbas is a CLI application that allows you to interact with your GoToSocial instance from your terminal. With enbas you can perform operations such as:

  • reviewing your account information
  • viewing, creating, deleting and boosting statuses
  • viewing timelines
  • viewing media attachments from statuses using your favourite media player
  • viewing, following, and blocking accounts
  • creating and voting in polls
  • viewing, creating, editing and deleting your lists
  • …and much more

Motivation

This project was created from the desire to interact with my GoToSocial instance and explore the Fediverse from the comfort of my own terminal emulator. This application is developed for those who use GoToSocial and spend most of their time in the terminal. If you like the idea of scrolling through your timelines in your favourite terminal emulator instead of a GUI or a browser then enbas might interest you.

Requirements

  • Your favourite terminal emulator: For best results choose a modern terminal emulator such as Alacritty, Kitty, Foot, Ghostty or Wezterm. By default enbas uses ANSI colours so make sure your terminal is configured to use your favourite colour scheme.
  • A nerd font: A nerd font is required to correctly display icons such as displaying the boost icon when viewing a status. Make sure you have a nerd font installed and that your favourite terminal emulator is configured to use it. See https://www.nerdfonts.com/ for more information about nerd fonts.
  • A browser: A browser is needed for you to complete the login process and if you want to view certain resources in the browser such as an account or a status.
  • A video player (optional): A video player is required if you want to play videos from media attachments.
  • An image viewer (optional): An image viewer is required if you want to view images from media attachments.
  • An audio player (optional): An audio player is required if you want to play audio from media attachments.

Development

This project is actively developed in Code Flow with the main branch mirrored to Codeberg.

Licensing

The licensing information associated with each file is specified in the REUSE.toml file, but in general:

  • All original source code is licensed under GPL-3.0-or-later.
  • All documentation is licensed under CC-BY-4.0.

Inspiration

This project was inspired by the following projects:

  • madonctl: A Mastodon CLI client written in Go.
  • tut: A Mastodon TUI written in Go.
  • toot: A Mastodon CLI and TUI written in Python.

Installation guide

This project does not produce pre-built binaries in order to give you complete control when building and installing the application. The installation process is pretty simple and the guide below provides step-by-step instructions to help you out.

Build requirements

  • go: A minimum version of Go 1.25.4 is required for building enbas. Visit https://go.dev/dl/ to download the latest version.
  • mage: Mage is a build tool similar to make. The project includes mage targets for building the binary, the man pages and the example configuration file. Visit https://magefile.org/ for instructions on how to install mage.
  • git (optional): Git is used to calculate the binary version and commit reference. This is optional as these values can be set manually via environment variables.

Obtain the source code

You can obtain the source code by cloning the repository or downloading the source code.

Clone the repository

You can clone the repository from Codeberg or Code Flow.

  • from Codeberg

    git clone https://codeberg.org/dananglin/enbas.git
    cd enbas
    
  • or from Code Flow

    git clone https://codeflow.dananglin.me.uk/apollo/enbas.git
    cd enbas
    

Download the source code

You can download the source code from Codeberg or Code Flow.

  • from Codeberg

    curl -sL https://codeberg.org/dananglin/enbas/archive/main.tar.gz -o enbas-main.tar.gz
    tar xzvf enbas-main.tar.gz
    cd enbas
    
  • or from Code Flow

    curl -sL https://codeflow.dananglin.me.uk/apollo/enbas/archive/main.tar.gz -o enbas-main.tar.gz
    tar xzvf enbas-main.tar.gz
    cd enbas
    

Build

Build the binary and the manual using the following commands.

mage build
mage docs:manual

If you’ve obtained the source code by downloading the TAR archive and you want enbas to display the correct build information, you’ll need to set the environment variables to specify the version and commit reference.

# example
export ENBAS_APP_VERSION="v0.3.0"
export ENBAS_APP_COMMIT_REF="8abfe5e9d32fe1a07c4d6907b64ca3eb34489bec"
mage build
mage docs:manual

Once the build is successfully you should see the __build directory containing the binary, the man pages and the example configuration file.

$ tree __build/
__build/
├── bin
│   └── enbas
└── share
    ├── doc
    │   └── enbas
    │       └── examples
    │           └── config.json
    └── man
        ├── man1
        │   └── enbas.1
        ├── man5
        │   └── enbas.5
        └── man7
            └── enbas-topics.7

10 directories, 5 files

Install

You can install enbas system-wide or locally in your home directory.

System-wide installation

The below set of commands assumes that you want to install the binary within the /usr/local directory. Don’t forget to use sudo if installing to /usr/local requires escalated privileges.

# install the binary
install --mode 0755 __build/bin/enbas /usr/local/bin

# install the man pages
install -D --mode 0644 __build/share/man/man1/enbas.1 /usr/local/share/man/man1/enbas.1
install -D --mode 0644 __build/share/man/man5/enbas.5 /usr/local/share/man/man5/enbas.5
install -D --mode 0644 __build/share/man/man7/enbas-topics.7 /usr/local/share/man/man7/enbas-topics.7

# install the example configuration file
install -D --mode 0644 __build/share/doc/enbas/examples/config.json /usr/local/share/doc/enbas/examples/config.json

Local installation

The below set of commands assumes that you want to install the binary within the ${HOME}/.local directory.

# install the binary
install --mode 0700 __build/bin/enbas ${HOME}/.local/bin

# install the man pages
install -D --mode 0600 __build/share/man/man1/enbas.1 ${HOME}/.local/share/man/man1/enbas.1
install -D --mode 0600 __build/share/man/man5/enbas.5 ${HOME}/.local/share/man/man5/enbas.5
install -D --mode 0600 __build/share/man/man7/enbas-topics.7 ${HOME}/share/man/man7/enbas-topics.7

# install the example configuration file
install -D --mode 0600 __build/share/doc/enbas/examples/config.json ${HOME}/.local/share/doc/enbas/examples/config.json

Verify

Run enbas from your terminal to verify that the installation was successful. You should see the usage documentation.

You can also view the application’s build information by running enbas version.

Getting started

In this guide we are going to log into an account on a private GoToSocial server.

Follow along to log into your own account.

Create and edit your configuration file

The configuration for enbas is stored in a JSON formatted file. The default path to the configuration file is set to $XDG_CONFIG_HOME/enbas/config.json.

If the XDG_CONFIG_HOME environment variable is not set then:

  • on Linux the path will be set to $HOME/.config/enbas/config.json.
  • on Darwin (MacOS) the path will be set to $HOME/Library/Application Support/enbas/config.json.
  • on Windows the path will be set within the %AppData% directory.

Alternatively you can use the --config top-level flag to specify a custom path to your configuration file.

Run the following command to generate your configuration file.

# Create a new configuration using the default path.
enbas create config
# Or create a new configuration using a custom path.
enbas --config /path/to/your/new/config.json create config

You can use the example configuration to help you edit your own. You may recall that when installing the application you may have also generated and installed the example configuration system-wide (at /usr/local/share/doc/enbas/examples/config.json) or locally within your home directory (at ${HOME}/.local/share/doc/enbas/examples/config.json). You can also find a copy on Code Flow or on Codeberg.

For more details about the configuration options see the Configuration reference page.

For this ‘Getting Started’ guide you may want to specify your favourite browser in the configuration so that enbas can open the link to your instance’s authorisation page during the login flow. If you prefer to open the link manually then you can leave this field empty.

Log into your GoToSocial account

enbas uses GoToSocial’s Oauth2 authentication flow to log into your Fediverse account. Follow the below steps to complete the login process.

  1. Run the following command to begin the login process. Use the --url to specify the URL of the instance that you want to log into. Use the --scope flag to specify the scope of your access (e.g. read, write). You can use the --scope flag multiple times to specify multiple scopes.

    enbas login --url gts.mydomain.example --scope read --scope write
    
  2. enbas will send a registration request to your instance and receive a new client ID and secret that it needs for authentication.

  3. enbas will then generate a link to the consent form for you to access in your browser and print it to your terminal screen along with a message explaining that you need to obtain the out-of-band token to continue.

    The link will open in a tab in your preferred browser if you’ve specified it in your configuration. Alternatively you can manually open it yourself.

    If the browser tab doesn’t open for you as expected you can still open the link manually.

  4. Once you’ve signed into GoToSocial in your browser, you will be informed that enbas would like to perform actions on your behalf with the scopes that you’ve specified earlier. If you’re happy with this then click on the big Allow button. A screenshot of the consent form

  5. The out-of-band token from your instance will be displayed to you in your browser. Copy it and return to your terminal.

  6. Paste the token into the prompt and press ENTER. enbas will then exchange the token for an access token which will be used to authenticate to your instance on your behalf.

  7. Finally, enbas will then verify the access token, save the credentials to the credentials file at the path specified in your configuration file, and inform you that you have successfully logged into your account.

Example login flow

$ enbas login --url super-cell.gts.enbas.private --scope read --scope write

You'll need to sign into your GoToSocial's consent page in order to generate the out-of-band token to continue with the application's login process.
Your browser may have opened the link to the consent page already. If not, please copy and paste the link below to your browser:

https://super-cell.gts.enbas.private/oauth/authorize?client_id=01C5TAJ1GC1HFH45BV3BNRSZ1M&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=read+write

Once you have the code, please copy and paste it below.
Out-of-band token: NJVMZGMWZMUTNJDKZI0ZZJNLLWI3NDATYTNJYWE0MJBLOGI5
✔ You have successfully logged in as victor@super-cell.gts.enbas.private.

View your account information

You can verify that you have successfully logged in by viewing your account information by running enbas show account --my-account.

$ enbas show account --my-account

Victor (@victor)

ACCOUNT ID:
01XWASN1G5K23ZBYCZHR4KQS3C

JOINED ON:
24 Apr 2025

STATS:
Followers: 0
Following: 0
Statuses: 0

BIOGRAPHY:
Hey there, the name's Victor.

I've been a Platform Engineer in the Healthcare industry for 7 years and
counting. I love containerising anything and everything with #docker and #k8s,
and often find myself dabbling with #python, #golang and #rust.

In my free time I like to cook, blog about FOSS software news and make videos
documenting my travels across the UK.

METADATA:
Pronouns: he/him
Location: Hertfordshire, UK
Website: https://victor.me.private
Blogs: https://blogs.victor.me.private
Photos: https://photos.victor.me.private
Streams: https://streams.victor.me.private

ACCOUNT URL:
https://super-cell.gts.enbas.private/@victor

YOUR PREFERENCES:
Default post language: en
Default post visibility: public
Mark posts as sensitive by default: false

Configuration reference

Example configuration: See here at Codeberg or Code Flow

Config

FieldTypeDescription
aliasesmap[string]stringA set of shortnames mapped to the enbas command.
This section is managed by enbas.
credentialsFilestringThe absolute path to your credentials file.
cacheDirectorystringThe absolute path to the root cache directory.
lineWrapMaxWidthnumber (integer)The maximum number of characters on a line before that line breaks.
This setting is used when displaying a timeline, your notifications, your bookmarks, the list of statuses from an account, etc.
gtsClientGTSClientThe settings for the GTS Client.
serverServerThe settings for running enbas in server mode.
integrationsIntegrationsIntegration settings.

GTSClient

FieldTypeDescription
timeoutnumber (integer)The timeout (in seconds) for API requests made to your GoToSocial instance.
mediaTimeoutnumber (integer)The timeout (in seconds) for requests made for retrieving media from your GoToSocial instance.

Server

FieldTypeDescription
socketPathstringThe path to the socket file that the backend server binds to.
This file is used for the communication between the enbas client and the enbas server.
pidPathstringThe path to the backend server’s PID file.
When the server starts it writes its process ID to this file.
The enbas client reads from this file when it is called to stop the backend server.
idleTimeoutnumber (integer)The time (in seconds) that the backend server can remain idle before shutting down.
This setting is only used when running the server without the --without-idle-timeout flag.
loggerServerLoggerThe settings for the server’s logger.

ServerLogger

FieldTypeDescription
levelstringThe server’s general logging level.
The accepted values are debug, info, warn and error.
By default the logging level is set to info.
pathstringThe path to the file where the logger will write the logs to.
If this field is empty, the logger will write to the console.

Integrations

FieldTypeDescription
browserstringThe command to run for opening the browser for viewing URLs (e.g. the URL of a remote account).
editorstringThe command to run for opening your favourite text editor for creating or editing statuses.
(THIS INTEGRATION IS NOT YET USED).
pagerstringThe command to run for piping long outputs into your favourite pager. To disable paging, leave this field blank.
imageViewerstringThe command to run for opening your favourite image viewer for viewing image files from media attachments.
videoPlayerstringThe command to run for opening your favourite video player for playing video files from media attachments.
audioPlayerstringThe command to run for opening your favourite audio player for playing audio files from media attachments.

Available operations

In this section of the documentation you can view all the commands that you can use with enbas. In this section, and as you interact more with enbas, you’ll come across the terms target, action and operation.

Target

A target is a resource that you can perform an action on. The target can be a GoToSocial resource (e.g. an account, a status or a timeline), or a local resource (e.g. your enbas configuration, your aliases or the usage documentation).

Action

An action is a built-in verb that describes the action to perform on a target. For example, the command enbas show status --status-id 01AV6D5YIKKEWDTLXTGVTTRW9dCHOLGJ uses the action keyword show to fetch and display the details of the status with the ID 01AV6D5YIKKEWDTLXTGVTTRW9dCHOLGJ.

Operation

An operation is the action that is performed on a particular target (e.g. create status), or the action performed on a target in relation to another target (e.g. add accounts to list).

You can view the targets that you can interact with under Available operations in the navigation menu. View the page of a specific target (e.g. status) for details on the operations you can perform on that target.

Top Level Flags

The top level flags below are available to all operations.

--config

The path to your configuration file.

Default: <empty>

--no-color

Disable the ANSI colour output when displaying the text on screen.

Default: false

access

The access target interacts with your access to your GoToSocial instance. Below are the operations you can perform on the access target.

create access

This operation creates a new access to your GoToSocial instance. This is the operation you’ll use to log into your GoToSocial instance. Enbas will use the Oauth2 authentication flow for the login process which is described in the ‘Getting started’ guide. You can run this command multiple times to log into multiple accounts.

format

enbas [top level flags] create access [flags]

top level flags

See Top Level Flags

flags

--scope

The scope of access to your GoToSocial instance (e.g. read). This flag can be used multiple times to specify multiple values.

Default: <empty>

--url (required)

The URL of your GoToSocial instance.

switch access to account

This operation switches between your logged in accounts.

format

enbas [top level flags] switch access to account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to switch.

verify access

This operation verifies that you are authenticated into your GoToSocial instance and prints the name of the account that you are signed into.

format

enbas [top level flags] verify access [flags]

top level flags

See Top Level Flags

flags

None

account

The account target interacts with a local or remote account. Below are the operations you can perform on the account target.

block account

This operation blocks a local or remote account.

format

enbas [top level flags] block account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to block.

find account

This operation searches for an account (remotely).

format

enbas [top level flags] find account [flags]

top level flags

See Top Level Flags

flags

--query (required)

The search query string.

--limit

The maximum number of items to display.

Default: 20

--restrict-to-following

Restrict the search to accounts that you are following.

Default: false

--resolve

Allow your instance to resolve the search by making calls to remote instances.

Default: false

follow account

This operation sends a follow request to the account you want to follow.

format

enbas [top level flags] follow account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to follow.

--notify

Get notifications whenever the account you want to follow posts a status.

Default: false

--show-reblogs

Show reblogs (boosts) from the account you want to follow.

Default: true

mute account

This operation mutes an account.

format

enbas [top level flags] mute account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to mute.

--duration

How long the effect should last for (set to 0s to last indefinitely).

Default: 0

--mute-notifications

Mute notifications as well as posts from the account.

Default: false

show account

This operation show a local or remote account.

format

enbas [top level flags] show account [flags]

top level flags

See Top Level Flags

flags

--account-name

The name of the account to show.

Default: <empty>

--browser

Show the account in your favourite browser.

Default: false

--exclude-reblogs

Exclude statuses that are reblogs (boosts) of other statuses.

Default: false

--exclude-replies

Exclude statuses that are replies to other statuses.

Default: false

--max-statuses

The maximum number of statuses to display.

Default: 20

--my-account

Specify your account to show.

Default: false

--only-media

Only show the statuses with media attachments.

Default: false

--only-pinned

Only show the account’s pinned statuses.

Default: false

--only-public

Only show the account’s public posts.

Default: false

--skip-account-relationship

Don’t show your relationship to the account that you are viewing.

Default: false

--skip-user-preferences

Don’t show your posting preferences when viewing your account information.

Default: false

--show-statuses

View the statuses from the account that you are viewing.

Default: false

unblock account

This operation unblocks an account.

format

enbas [top level flags] unblock account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to unblock.

unfollow account

This operation unfollows the account that you are curently following. If you have a follow request pending for the account in question, unfollowing that account will remove said follow request.

format

enbas [top level flags] unfollow account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to unfollow.

unmute account

This operation unmutes an account.

format

enbas [top level flags] unmute account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to unmute.

accounts

The accounts target interacts with one or accounts. Below are the operations you can perform on the accounts target.

add accounts to list

This operation adds one or more accounts to a specified list.

format

enbas [top level flags] add accounts to list [flags]

top level flags

See Top Level Flags

flags

--list-id (required)

The ID of the list.

--account-name (required)

The name of the account to add. This flag can be used multiple times to specify multiple values.

remove accounts from list

This operation removes one or more accounts from a specified list.

format

enbas [top level flags] remove accounts from list [flags]

top level flags

See Top Level Flags

flags

--list-id (required)

The ID of the list.

--account-name (required)

The name of the account to remove. This flag can be used multiple times to specify multiple values.

alias

The alias target interacts with a custom command mapped to an operation. Below are the operations you can perform on the alias target.

create alias

This operation creates a new alias. The new alias will be stored in your configuration file. You must not use a name from a built-in alias or an action keyword (e.g. show).

format

enbas [top level flags] create alias [flags]

top level flags

See Top Level Flags

flags

--name (required)

The name of the alias you want to create.

--operation (required)

The name of the operation.

delete alias

This operation deletes an existing alias. The alias will be deleted from your configuration file.

format

enbas [top level flags] delete alias [flags]

top level flags

See Top Level Flags

flags

--name (required)

The name of the alias you want to delete.

edit alias

This operation edits an existing alias.

format

enbas [top level flags] edit alias [flags]

top level flags

See Top Level Flags

flags

--name (required)

The name of the alias you want to edit.

--operation (required)

The name of the operation.

rename alias

This operation renames an existing alias. You must not rename the alias to a built-in alias or an action keyword (e.g. show).

format

enbas [top level flags] rename alias [flags]

top level flags

See Top Level Flags

flags

--old-name (required)

The old alias name.

--new-name (required)

The new alias name.

aliases

The aliases target interacts with the list of available aliases. Below are the operations you can perform on the aliases target.

show aliases

This operation prints the built-in and your defined aliases.

format

enbas [top level flags] show aliases [flags]

top level flags

See Top Level Flags

flags

None

blocked-accounts

The blocked-accounts target interacts with the accounts that are blocked by you. Below are the operations you can perform on the blocked-accounts target.

show blocked-accounts

This operation prints the list of the accounts that you are currently blocking.

format

enbas [top level flags] show blocked-accounts [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

bookmarks

The bookmarks target interacts with the statuses that you’ve bookmarked. Below are the operations you can perform on the bookmarks target.

show bookmarks

This operation prints the list of the statuses that you have bookmarked.

format

enbas [top level flags] show bookmarks [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

config

The config target interacts with your configuration. Below are the operations you can perform on the config target.

create config

This operation creates a new configuration file. The configuration file will be created using the default path unless the –config top-level flag is used.

format

enbas [top level flags] create config [flags]

top level flags

See Top Level Flags

flags

None

favourites

The favourites target interacts with the statuses that you’ve favourited (liked). Below are the operations you can perform on the favourites target.

show favourites

This operation prints the list of statuses that you’ve favourited (liked).

format

enbas [top level flags] show favourites [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

filter

The filter target interacts with a single filter. Below are the operations you can perform on the filter target.

create filter

This operation creates a new filter. By default, the new filter does not expire.

format

enbas [top level flags] create filter [flags]

top level flags

See Top Level Flags

flags

--title (required)

The title of the filter to create.

--filter-context (required)

The context in which the filter should be applied. This flag can be used multiple times to specify multiple values. The valid values for this flag are:

  • home
  • notifications
  • public
  • thread
  • account

--filter-expires-in

The time from when the filter is created that it should expire.

Default: 0

--filter-action

The action to take when a status matches this filter. The valid values for this flag are:

  • hide
  • warn

Default: warn

delete filter

This operation deletes the specified filter.

format

enbas [top level flags] delete filter [flags]

top level flags

See Top Level Flags

flags

--filter-id (required)

The ID of the filter.

edit filter

This operation edits the specified filter.

format

enbas [top level flags] edit filter [flags]

top level flags

See Top Level Flags

flags

--filter-id (required)

The ID of the filter.

--title

The title of the filter to edit.

Default: <empty>

--filter-context

The context in which the filter should be applied. This flag can be used multiple times to specify multiple values. The valid values for this flag are:

  • home
  • notifications
  • public
  • thread
  • account

Default: <empty>

--filter-expires-in

The time from when the filter is created that it should expire.

Default: 0

--filter-action

The action to take when a status matches this filter. The valid values for this flag are:

  • hide
  • warn

Default: <empty>

show filter

This operation prints the details of the specified filter.

format

enbas [top level flags] show filter [flags]

top level flags

See Top Level Flags

flags

--filter-id (required)

The ID of the filter.

filter-keyword

The filter-keyword target interacts with the text to filter within a filter. Below are the operations you can perform on the filter-keyword target.

add filter-keyword to filter

This operation creates and adds a filter keyword to the specified filter.

format

enbas [top level flags] add filter-keyword to filter [flags]

top level flags

See Top Level Flags

flags

--filter-id (required)

The ID of the filter.

--keyword (required)

The text to be filtered.

--whole-word

The filter should consider word boundaries.

Default: false

delete filter-keyword

This operation deletes an existing filter-keyword.

format

enbas [top level flags] delete filter-keyword [flags]

top level flags

See Top Level Flags

flags

--filter-keyword-id (required)

The ID of the filter-keyword.

edit filter-keyword

This operation edits the specified filter-keyword.

format

enbas [top level flags] edit filter-keyword [flags]

top level flags

See Top Level Flags

flags

--filter-keyword-id (required)

The ID of the filter-keyword.

--keyword

The text to be filtered.

Default: <empty>

--whole-word

The filter should consider word boundaries.

Default: false

show filter-keyword

This operation prints the details of the specified filter-keyword.

format

enbas [top level flags] show filter-keyword [flags]

top level flags

See Top Level Flags

flags

--filter-keyword-id (required)

The ID of the filter-keyword.

filter-status

The filter-status target interacts with the status to filter within a filter. Below are the operations you can perform on the filter-status target.

add filter-status to filter

This operation creates and adds a filter status to the specified filter.

format

enbas [top level flags] add filter-status to filter [flags]

top level flags

See Top Level Flags

flags

--filter-id (required)

The ID of the filter.

--status-id (required)

The ID of the status.

delete filter-status

This operation deletes an existing filter-status.

format

enbas [top level flags] delete filter-status [flags]

top level flags

See Top Level Flags

flags

--filter-status-id (required)

The ID of the filter-status.

show filter-status

This operation prints the details of the specified filter-status.

format

enbas [top level flags] show filter-status [flags]

top level flags

See Top Level Flags

flags

--filter-status-id (required)

The ID of the filter-status.

filters

The filters target interacts with the list of your filters. Below are the operations you can perform on the filters target.

show filters

This operation prints the list of all your filters.

format

enbas [top level flags] show filters [flags]

top level flags

See Top Level Flags

flags

None

follow-request

The follow-request target interacts with the account that is requesting to follow you. Below are the operations you can perform on the follow-request target.

accept follow-request

This operation accepts the request from the account that is requesting to follow you.

format

enbas [top level flags] accept follow-request [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to accept.

reject follow-request

This operation rejects the request from the account that is requesting to follow you.

format

enbas [top level flags] reject follow-request [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to reject.

follow-requests

The follow-requests target interacts with the list of accounts that are requesting to follow you. Below are the operations you can perform on the follow-requests target.

show follow-requests

This operation prints the list of accounts that are requesting to follow you.

format

enbas [top level flags] show follow-requests [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

followers

The followers target interacts with the accounts who are following the specified account. Below are the operations you can perform on the followers target.

show followers from account

This operation prints the names of the accounts that are following the specified account.

format

enbas [top level flags] show followers from account [flags]

top level flags

See Top Level Flags

flags

--account-name

The name of the account to show.

Default: <empty>

--limit

The maximum number of items to display.

Default: 20

--my-account

Specify your account to show.

Default: false

followings

The followings target interacts with the accounts who the specified account is following. Below are the operations you can perform on the followings target.

show followings from account

This operation prints the names of the accounts that the specified account is following.

format

enbas [top level flags] show followings from account [flags]

top level flags

See Top Level Flags

flags

--account-name

The name of the account to show.

Default: <empty>

--limit

The maximum number of items to display.

Default: 20

--my-account

Specify your account to show.

Default: false

instance

The instance target interacts with the GoToSocial instance. Below are the operations you can perform on the instance target.

show instance

This operation prints information about the GoToSocial instance that you have logged into.

format

enbas [top level flags] show instance [flags]

top level flags

See Top Level Flags

flags

None

list

The list target interacts with a single list. Below are the operations you can perform on the list target.

create list

This operation creates a new list.

format

enbas [top level flags] create list [flags]

top level flags

See Top Level Flags

flags

--exclusive

Hide posts from members of this list from your home timeline.

Default: false

--replies-policy

The replies policy of the list to create. The valid values for this flag are:

  • followed
  • list
  • none

Default: list

--title (required)

The title of the list to create.

delete list

This operation deletes an existing list.

format

enbas [top level flags] delete list [flags]

top level flags

See Top Level Flags

flags

--list-id (required)

The ID of the list.

edit list

This operation edits the specified list.

format

enbas [top level flags] edit list [flags]

top level flags

See Top Level Flags

flags

--list-id (required)

The ID of the list.

--exclusive

Hide posts from members of this list from your home timeline.

Default: false

--replies-policy

The replies policy of the list to edit. The valid values for this flag are:

  • followed
  • list
  • none

Default: list

--title

The title of the list to edit.

Default: <empty>

show list

This operation prints the details of the specified list.

format

enbas [top level flags] show list [flags]

top level flags

See Top Level Flags

flags

--list-id (required)

The ID of the list.

lists

The lists target interacts with one or more lists. Below are the operations you can perform on the lists target.

show lists

This operation prints the ID and the title of the lists that you’ve created.

format

enbas [top level flags] show lists [flags]

top level flags

See Top Level Flags

flags

None

media

The media target interacts with the media attached to the specified status. Below are the operations you can perform on the media target.

show media from status

This operation downloads and opens the media attachment(s) from a status.

format

enbas [top level flags] show media from status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

--attachment-id

The ID of the media attachment. This flag can be used multiple times to specify multiple values.

Default: <empty>

--all-audio

Play all audio files from the status.

Default: false

--all-images

Show all image files from the status.

Default: false

--all-videos

Play all video files from the status.

Default: false

media-attachment

The media-attachment target interacts with a media attachment that you own. Below are the operations you can perform on the media-attachment target.

create media-attachment

This operation uploads media from a file to the instance and creates a media attachment.

format

enbas [top level flags] create media-attachment [flags]

top level flags

See Top Level Flags

flags

--media-description

The description of the media attachment.

Default: <empty>

--media-file (required)

The path to the file of the media-attachment.

--media-focus

The focus of the media-attachment.

Default: <empty>

edit media-attachment

This operation edits the description and/or the focus of the media that you have created.

format

enbas [top level flags] edit media-attachment [flags]

top level flags

See Top Level Flags

flags

--attachment-id (required)

The ID of the media attachment.

--media-description

The description of the media attachment.

Default: <empty>

--media-focus

The focus of the media-attachment.

Default: <empty>

show media-attachment

This operation prints the details of a given media attachment. Note that you can only see the details of the media attachment that you have created.

format

enbas [top level flags] show media-attachment [flags]

top level flags

See Top Level Flags

flags

--attachment-id (required)

The ID of the media attachment.

muted-accounts

The muted-accounts target interacts with the accounts that are muted by you. Below are the operations you can perform on the muted-accounts target.

show muted-accounts

This operation prints the list of accounts that you have muted.

format

enbas [top level flags] show muted-accounts [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

note

The note target interacts with your private note about an account. Below are the operations you can perform on the note target.

add note to account

This operation adds a private note to the specified account.

format

enbas [top level flags] add note to account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to add.

--content (required)

The content of the note.

remove note from account

This operation removes the private note from the specified account.

format

enbas [top level flags] remove note from account [flags]

top level flags

See Top Level Flags

flags

--account-name (required)

The name of the account to remove.

notification

The notification target interacts with a single notification. Below are the operations you can perform on the notification target.

show notification

This operation prints the details of the specified notification.

format

enbas [top level flags] show notification [flags]

top level flags

See Top Level Flags

flags

--notification-id (required)

The ID of the notification to show.

notifications

The notifications target interacts with multiple notifications. Below are the operations you can perform on the notifications target.

clear notifications

This operation clears all your notifications.

format

enbas [top level flags] clear notifications [flags]

top level flags

See Top Level Flags

flags

None

show notifications

This operation prints the list of your notifications.

format

enbas [top level flags] show notifications [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

--exclude-notification-type

The type of notifications to exclude from the list. This flag can be used multiple times to specify multiple values. The valid values for this flag are:

  • follow
  • follow_request
  • mention
  • reblog
  • favourite
  • poll
  • status

Default: <empty>

--include-notification-type

The type of notifications to include in the list. This flag can be used multiple times to specify multiple values. The valid values for this flag are:

  • follow
  • follow_request
  • mention
  • reblog
  • favourite
  • poll
  • status

Default: <empty>

server

The server target interacts with the backend server. Below are the operations you can perform on the server target.

start server

This operation starts the backend server.

format

enbas [top level flags] start server [flags]

top level flags

See Top Level Flags

flags

--without-idle-timeout

Start the server without an idle timeout.

Default: false

stop server

This operation stops the backend server.

format

enbas [top level flags] stop server [flags]

top level flags

See Top Level Flags

flags

None

status

The status target interacts with a single status. Below are the operations you can perform on the status target.

add status to bookmarks

This operation adds the specified status to your bookmarks.

format

enbas [top level flags] add status to bookmarks [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

create status

This operation creates a new status.

format

enbas [top level flags] create status [flags]

top level flags

See Top Level Flags

flags

--add-poll

Add a poll to the new status.

Default: false

--attachment-id

The ID of the media attachment. This flag can be used multiple times to specify multiple values.

Default: <empty>

--content

The content of the status.

Default: <empty>

--content-type

The type that the contents should be parsed from. The valid values for this flag are:

  • plain
  • markdown

Default: plain

--in-reply-to

The ID of the status that you want to reply to.

Default: <empty>

--language

The ISO 639 language code for this status.

Default: <empty>

--local-only

Do not federate the status beyond the local timeline(s).

Default: false

--media-description

The description of the media attachment. This flag can be used multiple times to specify multiple values.

Default: <empty>

--media-file

The path to the file of the media-attachment. This flag can be used multiple times to specify multiple values.

Default: <empty>

--media-focus

The focus of the media-attachment. This flag can be used multiple times to specify multiple values.

Default: <empty>

--not-boostable

Viewers will not be allowed to reblog (boost) the created status.

Default: false

--not-likeable

Viewers will not be allowed to like (favourite) the created status.

Default: false

--not-replyable

Viewers will not be allowed to reply to the created status.

Default: false

--poll-allows-multiple-choices

Allow viewers to make multiple choices in the poll.

Default: false

--poll-expires-in

The time from when the poll is created that it should expire.

Default: 86400

--poll-hides-vote-counts

Hide the vote count until the poll is closed.

Default: false

--poll-option

A poll option (use this flag multiple times to set multiple poll options). This flag can be used multiple times to specify multiple values.

Default: <empty>

--sensitive

Mark the status as sensitive.

Default: false

--summary

The summary of the status (a.k.a the subject, spoiler text or content warning).

Default: <empty>

--visibility

The visibility of the status. The valid values for this flag are:

  • public
  • private
  • unlisted
  • mutuals_only
  • direct

Default: <empty>

delete status

This operation deletes a status that belongs to you. You can optionally save the text of the deleted status using the save-text flag if you wish to redraft it. If this is specified, the text of the deleted status will be written to a file within your cache directory.

format

enbas [top level flags] delete status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

--save-text

Save the text of the deleted status.

Default: false

favourite status

This operation favourites (likes) the specified status.

format

enbas [top level flags] favourite status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

find status

This operation searches for a status (remotely).

format

enbas [top level flags] find status [flags]

top level flags

See Top Level Flags

flags

--query (required)

The search query string.

--limit

The maximum number of items to display.

Default: 20

--account-name

The name of the account to find.

Default: <empty>

--resolve

Allow your instance to resolve the search by making calls to remote instances.

Default: false

mute status

This operation mutes the specified status to stop you from receiving future notifications for replies, favourites (likes), reblogs (boosts), etc from the status’ thread.

format

enbas [top level flags] mute status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

reblog status

This operation reblogs (boosts) the specified status.

format

enbas [top level flags] reblog status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

remove status from bookmarks

This operation removes the specified status from your bookmarks.

format

enbas [top level flags] remove status from bookmarks [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

show status

This operation prints the details of the specified status.

format

enbas [top level flags] show status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

--browser

Show the status in your favourite browser.

Default: false

--show-who-favourited

Show the accounts who favourited (liked) the status.

Default: false

--show-who-reblogged

Show the accounts who reblogged (boosted) the status.

Default: false

unfavourite status

This operation unfavourites (unlikes) the status that you’ve previously favourited.

format

enbas [top level flags] unfavourite status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

unmute status

This operation unmutes the specified status so that you can start receiving future notifications for replies, favourites (likes), reblogs (boosts), etc from the status’ thread.

format

enbas [top level flags] unmute status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

unreblog status

This operation unreblogs (unboosts) the specified status.

format

enbas [top level flags] unreblog status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

tag

The tag target interacts with a single tag (hashtag). Below are the operations you can perform on the tag target.

find tag

This operation searches for a tag.

format

enbas [top level flags] find tag [flags]

top level flags

See Top Level Flags

flags

--query (required)

The search query string.

--limit

The maximum number of items to display.

Default: 20

follow tag

This operation follows the specified tag.

format

enbas [top level flags] follow tag [flags]

top level flags

See Top Level Flags

flags

--tag-name (required)

The name of the (hash)tag.

show tag

This operation prints details of the specified tag.

format

enbas [top level flags] show tag [flags]

top level flags

See Top Level Flags

flags

--tag-name (required)

The name of the (hash)tag.

unfollow tag

This operation unfollows the tag that you are currently following.

format

enbas [top level flags] unfollow tag [flags]

top level flags

See Top Level Flags

flags

--tag-name (required)

The name of the (hash)tag.

tags

The tags target interacts with multiple tags (hashtags). Below are the operations you can perform on the tags target.

show tags

This operation prints the list of the tags that you are following.

format

enbas [top level flags] show tags [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

thread

The thread target interacts with a status thread. Below are the operations you can perform on the thread target.

show thread from status

This operation prints the context around the specified status.

format

enbas [top level flags] show thread from status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

timeline

The timeline target interacts with your timeline. Below are the operations you can perform on the timeline target.

show timeline

This operation prints the list of statuses from a timeline.

format

enbas [top level flags] show timeline [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

--list-id

The ID of the list.

Default: <empty>

--tag-name

The name of the (hash)tag.

Default: <empty>

--timeline-category

The category of the timeline to show. The valid values for this flag are:

  • home
  • list
  • public
  • tag

Default: home

token

The token target interacts with details of an application token. Below are the operations you can perform on the token target.

invalidate token

This operation invalidates the specified token which will remove it from your instance’s database. Once this token is invalidated, you will not be able to authenticate to your GoToSocial instancewith it.

format

enbas [top level flags] invalidate token [flags]

top level flags

See Top Level Flags

flags

--token-id (required)

The ID of the token to invalidate.

show token

This operation prints the details of the specified token.

format

enbas [top level flags] show token [flags]

top level flags

See Top Level Flags

flags

--token-id (required)

The ID of the token to show.

tokens

The tokens target interacts with a list of your tokens. Below are the operations you can perform on the tokens target.

show tokens

This operation prints the list of the tokens that you have created.

format

enbas [top level flags] show tokens [flags]

top level flags

See Top Level Flags

flags

--limit

The maximum number of items to display.

Default: 20

usage

The usage target interacts with the usage documentation. Below are the operations you can perform on the usage target.

show usage

This operation prints the usage documentation for a given target, operation or alias.

format

enbas [top level flags] show usage [flags]

top level flags

See Top Level Flags

flags

--target

The name of the target to show.

Default: <empty>

--operation

The name of the operation.

Default: <empty>

--alias

The name of the alias.

Default: <empty>

version

The version target interacts with the application’s build information. Below are the operations you can perform on the version target.

show version

This operation prints the application’s build information.

format

enbas [top level flags] show version [flags]

top level flags

See Top Level Flags

flags

--full

Print the application’s full build information.

Default: false

votes

The votes target interacts with the votes(s) to the poll in a status. Below are the operations you can perform on the votes target.

add votes to status

This operation adds your vote(s) to the poll in the specified status.

format

enbas [top level flags] add votes to status [flags]

top level flags

See Top Level Flags

flags

--status-id (required)

The ID of the status.

--vote (required)

The option in the poll to vote for. This flag can be used multiple times to specify multiple values.

Aliases

Aliases allows you to shorten and customise enbas commands to make the experience of using enbas more easier and familiar to you.

An alias is a custom command that is mapped to an operation. For example you can create an alias called “my-followers” to get the list of your followers by mapping it to “show followers from account –my-account”.

You can create, edit, rename and delete an alias using the alias target. For more details about the available operations available to the target run the command below:

enbas help --target alias

Your aliases are stored in your configuration file. It is possible to edit your configuration file to create and update aliases but you are encouraged to manage your aliases with enbas as it supports validating your aliases before saving the changes to your configuration file.

Built-in aliases

help

prints the usage documentation
This is an alias for show usage.

login

performs the login process for you to log into your GoToSocial instance
This is an alias for create access.

version

prints the application’s build information
This is an alias for show version.

whoami

prints the name of the account that you are signed into
This is an alias for verify access.

Validation

When creating or renaming an alias, enbas validates the name against the below validation rules before saving the alias to the configuration file.

  • The alias name must be a single word with no spaces.
  • The name must only contain alpha-numeric characters and hyphens.
  • The name must be at least 3 characters long.
  • The name must start and end with an alpha-numeric character.
  • The name must not be a built-in action word (e.g. create).
  • The name must not be a built-in alias.

If you create an invalid alias directly in your configuration file and attempt to use it, enbas will detect it and fail to perform the operation.

You can use the name of an existing target as an alias. For example you can create an alias called “lists” mapped to “show lists”.

Examples

  • Create and use an alias to show the list of your aliases.
    enbas create alias --name aliases --operation "show aliases"
    enbas aliases
    
  • Create and use an alias called “boost” to boost a status.
    enbas create alias --name boost --operation "reblog status --status-id"
    enbas boost 01AV6D5YIKKEWDTLXTGVTTRW9dCHOLGJ
    
  • Create and use an alias called “fave” to like a status.
    enbas create alias --name fave --operation "favourite status --status-id"
    enbas fave 01AV6D5YIKKEWDTLXTGVTTRW9dCHOLGJ
    
  • Create and use an alias to make a quick public toot.
    enbas create alias --name toot --operation "create status --content-type plain --visibility public --content"
    enbas toot "Hello, Fediverse 👋"
    

The time duration flag type

The time duration flag type is a custom flag type that allows you to specify a duration of time, for example specifying the expiry time on a newly created poll or how long you want to mute an account for. The time duration flag takes a string input and converts it into a duration of time. An example string input can be something like “3 days, 12 hours and 39 minutes” which the flag will convert into a time duration of 304,740 seconds. The time duration flag type can convert units in days, hours, minutes and seconds.

There are simple rules to follow to ensure that your input is converted correctly, such as:

  • The string input must be wrapped in quotes.
  • Use the keyword day or days to specify the number of days.
  • Use the keyword hour or hours to specify the number of hours.
  • Use the keyword minute or minutes to specify the number of minutes.
  • Use the keyword second or seconds to specify the number of seconds.
  • There must be at least one space between the quantity and the unit of time.
    For example "7 days" is a valid input but "7days" is invalid.

Examples of valid string inputs

  • "3 days"
  • "6 hours, 45 minutes and 1 second"
  • "1 day, 15 hours 31 minutes and 12 seconds"
  • "(7 days) (1 hour) (21 minutes) (35 seconds)"

Example operations

  • Mute an account for 30 minutes.
    enbas mute account --account-name @bob@gts.social.example --duration "30 minutes"
    
  • Create a poll that will expire in 12 and a half days.
    enbas create status --content-type plain \
        --visibility public \
        --content "Vim or Emacs" \
        --add-poll \
        --poll-option vim \
        --poll-option emacs \
        --poll-expires-in "12 days and 12 hours"
    
  • Expire an existing filter in 1 hour.
    enbas edit filter --filter-id 01VZMFZ3KNGMWBX4HXGOCSJMQXFB4PGH \
        --filter-expires-in "1 hour"