Terminal over Facebook Messenger, running continuously as a background process.
I created fbash because I wanted to be able to easily access a remote computer's terminal from my phone, using a familiar interface. Facebook Messenger is an extremely widely used platform with many features that can enhance a basic SSH client. Fbash now allows collaboration through group chats, and remotely sending and retrieving files, tasks which are not easy to do using a normal SSH client.
Installation and Setup
Install through npm.
npm install -g fbash
fbash can be started using the command
fbash. When it is initially run, it will prompt the user for an email and password.
These should be the same credentials used to log into Facebook. In subsequent runs, fbash will use a saved app state to log in.
$ fbash start email: firstname.lastname@example.org password: **************** Started fbash.
In addition, all running fbash processes can be stopped with the following command.
$ fbash stop
After starting the script on your computer, you can access your terminal by messaging a command to yourself on Facebook. You can use most terminal commands through fbash.
It will respond with
@fbash followed by the standard output, standard error, or other errors.
fbash does not allow using commands which require user interaction, such as
fbash can also be accessed through normal chats (not just to yourself).
To use it in a chat that is not the chat with yourself, prefix the command with
/fbash. For example, to run
ls in another chat, use
It will display this output in the chat from which the command was received.
/set <setting> <value>
showcode <file_path> [language]
Details for each command can be found on the docs.
Changes as of latest version
- Allows replacing periods to bypass Facebook's spam detection.
- No longer requires
Note: fbash is not a truly stateful terminal; it cannot handle environment variables and other functionality associated with terminal state. The working directory is handled manually by parsing
cd commands. Because of this, compound commands with a
cd component will not function properly, and may cause unexpected errors.
How to Contribute
- If you have an idea for a command which would be relevant and useful, please open an issue with the suggestion.
- For the 'showcode' command, there is a hard-coded list of file extensions and corresponding languages. If you want a language to be added, please either open an issue with the language and file extension or create a pull request. The map of languages and file extensions can be found at src/utils/getFileType.js.