Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ __pycache__/

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
Expand All @@ -28,6 +27,7 @@ share/python-wheels/
MANIFEST
*.bat
*.exe
*.onnx
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
Expand Down
646 changes: 646 additions & 0 deletions COPYRIGHT.txt

Large diffs are not rendered by default.

191 changes: 187 additions & 4 deletions LICENSE

Large diffs are not rendered by default.

17 changes: 17 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
The RescueBox project is a collection of open-source packages licensed
individually under multiple open-source licenses. Licensing terms are
available at the RescueBox repository website:

https://github.com/UMass-Rescue/RescueBox/LICENSE

For information about the software license for a particular package,
see package-specific documentation (e.g., RescueBox/src/<packagename>/LICENSE).

For RescueBox Copyright unless otherwise stated by package, directory and/or file,

Copyright (C) 2025 RescueBox contributors

This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it under certain conditions.

For any questions or clarifications regarding licensing, please contact us at (rescuebox@umass.edu).
45 changes: 0 additions & 45 deletions RescueBox-Desktop/LICENSE

This file was deleted.

82 changes: 44 additions & 38 deletions RescueBox-Desktop/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,69 +5,60 @@

<img align="right" width="200" src="./docs/icon.png" width="200" />

RescueBox Desktop (RBox) is a self-contained binary offering a UI interface to a library of ML models for various forensic applications. To use RescueBox Desktop, start up a model application in the background adhering to the [FlaskML](https://umass-rescue.github.io/Flask-ML/materials/guides/examples) interface. Then, register the model application's IP Host address and port. You can now run the model by specifying its inputs on the UI and analyzing outputs when ready. RBox handles the rest: running the jobs, and interfacing with different ML models. Since RBox is aimed toward forensic analysts, it is designed to operate on local, or drive-mounted storage.
RescueBox Desktop (RBox) is a self-contained binary offering a UI interface to a library of ML models for various forensic applications. To use RescueBox Desktop, start up a model application in the background adhering to the [Fastapi](https://github.com/UMass-Rescue/RescueBox/blob/main/flaskml_migration_steps.md) interface. You can now run the model [server](https://github.com/UMass-Rescue/RescueBox/blob/main/run_server) and interact by specifying its inputs on the UI and analyzing outputs when ready. RBox handles the rest: running the jobs, and interfacing with different ML models. Since RBox is aimed toward forensic analysts, it is designed to operate on local, or drive-mounted storage.

For a review of the project's goals, read [What is RescueBox Desktop?](./docs/what-is-rescuebox-desktop.md). For a view into how RBox-Desktop works, read the [architecture section](#architecture).

# Getting Started

## Step 1: Download the Latest Release

Get the latest release of the binary for your operating system (Windows, macOS and Linux) from the [release page](https://github.com/UMass-Rescue/RescueBox-Desktop/releases). For Linux, see [Additional Instructions for Linux](#additional-instructions-for-linux).
Get the latest release of the binary for your operating system (Windows) from the [source](https://github.com/UMass-Rescue/RescueBox/tree/main/RescueBox-Desktop).

## Step 2: Start a Flask-ML Compliant Model
## Step 2: Start a Fastapi Compliant Model

Download and install one of the [Flask-ML compliant models](https://umass-rescue.github.io/Flask-ML/materials/guides/examples), or [write your own!](https://umass-rescue.github.io/Flask-ML/materials/guides/getting-started)
Download and run the [Fastapi](https://github.com/UMass-Rescue/RescueBox/wiki/Onboarding) model server.

Run the model application, which should provide you with a URL to register with RBox.
Run the model application server, which should provide you with a URL to RBox.

## Step 3: Using the App

Launch the binary you downloaded in [step 1](#step-1-download-the-latest-release), and register the model application using the IP address and port.
Launch the Rescuebox-Desktop icon or see below to launch in dev mode using npm start.

You should now be able to see the model application in the app, and be able to run inference tasks on it!

![](./docs/ui-screenshot.png)

## Additional Instructions for Linux
## Additional Instructions for Mac

To run the AppImage on Linux, we first need to add execution permission on the AppImage file.

```bash
chmod a+x RescueBox-Desktop-<version_number>.AppImage
Might need these before `npm install`
```
### Upgrade node if your node version is less than 14. (check with `node -v`)
brew install node@20
echo 'export PATH="/usr/local/opt/node@20/bin:$PATH"' >> ~/.zshrc

Then, some Additional steps may be required for Linux, depending on your distro. For Ubuntu, you will need to install the FUSE library.

### Ubuntu >= 24.04

```bash
sudo add-apt-repository universe
sudo apt install libfuse2t64
### Install python-setuptools since we're using python 3.12
brew install python-setuptools
### Or install it from https://pypi.org/project/setuptools/ into the python environment on your command line
```

### Ubuntu <= 22.04

```bash
sudo add-apt-repository universe
sudo apt install libfuse2
9. Install UI dependencies
```
cd RescueBox-Desktop
npm install
```

At last, Run the AppImage with the "no-sandbox" option

```bash
./RescueBox-Desktop-<version-number>.AppImage --no-sandbox
10. Run UI
```
npm start
```

You should see the UI show up after this. Connect to your server and go to the "Models" tab to run the models.
```
# Development

RescueBox Desktop is built using [Electron](https://www.electronjs.org/), [React](https://reactjs.org/), TypeScript, TailwindCSS, and SQlite (with Sequelize).

RescueBox implments the "Flask-ML" protocol, which is a simple interface for running ML models. See [Flask-ML Protocol](./docs/FlaskML-Protocol-Sequence-Diagram.png).

<p align="center">
<img src="./docs/FlaskML-Protocol-Sequence-Diagram.png" width="450" />
</p>

## Prerequisites

Expand All @@ -78,7 +69,7 @@ RescueBox implments the "Flask-ML" protocol, which is a simple interface for run
Clone the repo and install dependencies:

```bash
git clone https://github.com/UMass-Rescue/RescueBox-Desktop.git
git clone https://github.com/UMass-Rescue/RescueBox.git
cd RescueBox-Desktop
npm install
```
Expand All @@ -98,14 +89,29 @@ npm start
To package apps for the local platform:

```bash
npm run package
1 build the rescuebox.exe using the rescuebox.spec in RescueBox directory. ( see file for instructions)

2 copy pre reqs to assets\rb_server :
winfsp-2.0.23075.msi , docs , demo files to run models

3 copy these cmds to rb.bat and run it as one batch file
rmdir /s /q assets\rb_server\dist
move ../dist assets\rb_server
cmd /c npm cache clean --force
cmd /c npm cache verify
cmd /c npm install
cmd /c npm run postinstall
cmd /c npm run build
cmd /c npm run rebuild
cmd /c npm exec electron-builder -- --win
```
note : release\app\package.json contains the version number

4 release\build\RescueBox-Desktop Setup 2.0.0.exe should get created


## Docs

See electron-react's [docs and guides here](https://electron-react-boilerplate.js.org/docs/installation)

[github-actions-status]: https://github.com/UMass-Rescue/RescueBox-Desktop/actions/workflows/test.yml/badge.svg?branch=main
[github-actions-url]: https://github.com/UMass-Rescue/RescueBox-Desktop/actions/workflows/test.yml
[github-tag-image]: https://img.shields.io/github/tag/UMass-Rescue/RescueBox-Desktop.svg?label=version
[github-tag-url]: https://github.com/UMass-Rescue/RescueBox-Desktop/releases/latest

Binary file added RescueBox-Desktop/build/box.ico
Binary file not shown.
Binary file added RescueBox-Desktop/build/box.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
41 changes: 41 additions & 0 deletions RescueBox-Desktop/build/installer.nsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
!include WinMessages.nsh

!define COPYYEAR 2025

Var VersionNumber


Section
SetDetailsPrint both
InitPluginsDir
StrCpy $VersionNumber "v2.0.0"
ExpandEnvStrings $0 %COMSPEC%
MessageBox MB_OK "RescueBox $VersionNumber $INSTDIR"
MessageBox MB_OK|MB_ICONINFORMATION "Copyright (R) ${COPYYEAR}"
SectionEnd

!macro customHeader
RequestExecutionLevel admin
!macroend


Function .onInstSuccess
Var /GLOBAL INSTDIR_DAT
Strcpy "$INSTDIR_DAT" "$INSTDIR\resources\assets\rb_server"
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "msiexec /i $INSTDIR_DAT\winfsp-2.0.23075.msi INSTALLLEVEL=1000 /passive"'
FunctionEnd


Section "Uninstall"
Var /GLOBAL INSTDIR_LOG
Strcpy "$INSTDIR_LOG" "$AppData\RescueBox-Desktop\logs"

FindWindow $0 "RescueBox-Desktop"
SendMessage $0 ${WM_CLOSE} 0 0
ExecWait '"$0" /k "del/f /q $INSTDIR_LOG\*.log"'
ExecWait '"$0" /K "rmdir /S /Q $INSTDIR"'

SectionEnd


Binary file not shown.
Binary file removed RescueBox-Desktop/docs/ui-rbox-desktop-v0.1.0.pdf
Binary file not shown.
5 changes: 4 additions & 1 deletion RescueBox-Desktop/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading