{"id":44354423,"url":"https://github.com/ofabel/fssdk","last_synced_at":"2026-02-11T16:03:29.358Z","repository":{"id":332650692,"uuid":"857574235","full_name":"ofabel/fssdk","owner":"ofabel","description":"Automation toolbox for Flipper Zero: transfer files and run commands.","archived":false,"fork":false,"pushed_at":"2024-09-29T05:41:05.000Z","size":659,"stargazers_count":12,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-15T00:46:49.322Z","etag":null,"topics":["automation","flipper","flipper-zero","flipperzero","scripts","tool","toolbox"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ofabel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-15T02:40:47.000Z","updated_at":"2026-01-01T02:15:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ofabel/fssdk","commit_stats":null,"previous_names":["ofabel/fssdk"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ofabel/fssdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofabel%2Ffssdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofabel%2Ffssdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofabel%2Ffssdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofabel%2Ffssdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ofabel","download_url":"https://codeload.github.com/ofabel/fssdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofabel%2Ffssdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29337015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T16:00:30.228Z","status":"ssl_error","status_checked_at":"2026-02-11T16:00:25.398Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","flipper","flipper-zero","flipperzero","scripts","tool","toolbox"],"created_at":"2026-02-11T16:03:29.283Z","updated_at":"2026-02-11T16:03:29.343Z","avatar_url":"https://github.com/ofabel.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flipperzero Script SDK\n\nLooking for a solution to upload your scripts to Flipper Zero without using [qFlipper](https://flipperzero.one/update)?\n\n![Demo](./docs/demo.gif)\n\n## Installation\n\nJust download the [latest release](https://github.com/ofabel/fssdk/releases/latest) and place it somewhere on your computer:\nThis can be your project's root folder or a more general location like `/usr/local/bin`.\n\n## Usage\n\nThis application is a simple CLI program. The program consists of several sub commands:\n\n* **cli** - Opens a terminal session on the Flipper Zero (use \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eC\u003c/kbd\u003e to close).\n* **run** - Executes only the commands from the `run` section in the config file.\n* **sync** - Do a file sync according to the settings in the config file.\n\nIf no sub command is provided, the program will perform as follows:\n\n1. **sync** files and folders.\n2. **run** the defined commands.\n\nIt is not strictly necessary to use a config file.\nSmall tasks, like uploading a few files and folders, can also be done with CLI arguments.\nHowever, the [config file](#configuration) should assist you on repetitive tasks.\n\n```plain\nUsage: fssdk [--config CONFIG] [--quiet] [--port PORT] \u003ccommand\u003e [\u003cargs\u003e]\n\nOptions:\n  --config CONFIG, -c CONFIG\n                         Path to the config file. [default: flipper.json]\n  --quiet, -q            Don't print any output. [default: false]\n  --port PORT, -p PORT   The port where your Flipper is connected.\n  --help, -h             Display this help and exit\n  --version              Display version and exit\n\nCommands:\n  cli\n  run\n  sync\n```\n\n### Configuration\n\nBy default, the application checks for a `flipper.json` file in the current working directory.\n\n```json\n{\n    \"source\": \"src\",\n    \"target\": \"/ext/apps/Scripts\",\n    \"orphans\": \"ignore\",\n    \"include\": [\n        \"*.js\",\n        \"*.py\"\n    ],\n    \"exclude\": [\n        \"**.git**\",\n        \"**__pycache__**\",\n        \"*.json\"\n    ],\n    \"run\": [\n        \"loader close\",\n        \"js /ext/apps/Scripts/program.js\"\n    ]\n}\n```\n\n* **source** - Defines the source folder of your scripts. The path must be relative to the config file location.\n* **target** - The target folder of your scripts on the Flipper's SD card. The path must be absolute.\n* **orphans** - _optional_ - How to handle orphaned files in the target folder:\n    * **ignore** - _default_ - Ignore the files.\n    * **download** - Download the files.\n    * **delete** - Delete the files.\n* **include** - Glob patterns to match included files.\n* **exclude** - Glob patterns to match excluded files.\n* **run** - Commands to execute. Use `\u003cCTRL+C\u003e` to abort a running command.\n\n\u003e [!TIP]\n\u003e The config file should assist you on repetitive tasks.\n\u003e It defines all necessary settings, so you only have to run `fssdk` without any arguments.\n\n### Synchronization\n\nFile synchronization is one of the key features of this application.\nThe program will only handle files, that match the `include` patterns and don't match the `exclude` patterns from the config file.\nYou can overwrite the `source` and/or `target` settings from the config file with the corresponding CLI arguments.\n\n```plain\nUsage: fssdk sync [--dry-run] [--force] [--list] [--local] [--source SOURCE] [--target TARGET]\n\nOptions:\n  --dry-run, -d          Do a dry run, don't upload, download or delete any files. [default: false]\n  --force, -f            Upload without any similarity checks. [default: false]\n  --list, -l             List matching files. [default: false]\n  --local, -o            List matching files from local source only. [default: false]\n  --source SOURCE, -s SOURCE\n                         Sync all from source to target. If source is a folder, target is also treated as a folder.\n  --target TARGET, -t TARGET\n                         Sync all from source to target.\n```\n\n\u003e [!TIP]\n\u003e Use the `--list` argument to check your `include` and `exclude` patterns against the filesystem.\n\n### Run\n\nOne of the use cases for this tool is to assist script development with the Flipper Zero:\nYou write your JS or Python script on your computer and have to upload it to the device in order to test it.\nThe `run` task executes a list of predefined commands on your Flipper.\n\n```plain\nUsage: fssdk run [--dry-run]\n\nOptions:\n  --dry-run, -d          Do a dry run, don't execute any commands. [default: false]\n```\n\n### CLI\n\nStart a terminal session without any additional program like PuTTY or Minicom.\nYou can also send a single command and receive its output.\n\n```plain\nUsage: fssdk cli [--command COMMAND]\n\nOptions:\n  --command COMMAND, -C COMMAND\n                         Execute a single command.\n```\n\u003e [!NOTE]\n\u003e The full VT100 support of the CLI command is not yet completed.\n\n## Development\n\nThis section only applies to developers or contributors of this repositorys.\n\n### Requirements\n\n* [protoc](https://github.com/protocolbuffers/protobuf/releases)\n* [protoc-gen-go](https://protobuf.dev/reference/go/go-generated/)\n\n### Setup\n\n```bash\ngit clone --recurse-submodules git@github.com:ofabel/flipperzero-script-sdk.git\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofabel%2Ffssdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fofabel%2Ffssdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofabel%2Ffssdk/lists"}