{"id":13435072,"url":"https://github.com/jonhadfield/sn-cli","last_synced_at":"2026-02-01T16:00:39.496Z","repository":{"id":45514548,"uuid":"147110819","full_name":"jonhadfield/sn-cli","owner":"jonhadfield","description":"a command line interface for standard notes","archived":false,"fork":false,"pushed_at":"2026-01-31T15:15:53.000Z","size":1114,"stargazers_count":86,"open_issues_count":12,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-01T02:29:44.289Z","etag":null,"topics":["cli","notes","sn-cli","standard","standardnotes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonhadfield.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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":"2018-09-02T18:22:44.000Z","updated_at":"2026-01-31T15:15:57.000Z","dependencies_parsed_at":"2025-09-27T08:39:36.398Z","dependency_job_id":"a226b9d8-a7f0-4227-825c-859a65511150","html_url":"https://github.com/jonhadfield/sn-cli","commit_stats":null,"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/jonhadfield/sn-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhadfield%2Fsn-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhadfield%2Fsn-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhadfield%2Fsn-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhadfield%2Fsn-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonhadfield","download_url":"https://codeload.github.com/jonhadfield/sn-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonhadfield%2Fsn-cli/sbom","scorecard":{"id":530994,"data":{"date":"2025-08-11","repo":{"name":"github.com/jonhadfield/sn-cli","commit":"0ec3b7d642305faf070916499e1198fa1010d465"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 1/21 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":9,"reason":"11 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/sonarqube.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sonarqube.yml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/sonarqube.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/sonarqube.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/sonarqube.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/tests.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/jonhadfield/sn-cli/tests.yml/main?enable=pin","Warn: goCommand not pinned by hash: .github/workflows/tests.yml:33","Warn: goCommand not pinned by hash: .github/workflows/tests.yml:34","Warn: goCommand not pinned by hash: .github/workflows/tests.yml:35","Warn: goCommand not pinned by hash: .github/workflows/tests.yml:36","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   4 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Affero General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 0.3.4 not signed: https://api.github.com/repos/jonhadfield/sn-cli/releases/136106310","Warn: release artifact 0.3.3 not signed: https://api.github.com/repos/jonhadfield/sn-cli/releases/136098884","Warn: release artifact 0.3.2 not signed: https://api.github.com/repos/jonhadfield/sn-cli/releases/136094212","Warn: release artifact 0.3.1 not signed: https://api.github.com/repos/jonhadfield/sn-cli/releases/134599575","Warn: release artifact 0.3.0 not signed: https://api.github.com/repos/jonhadfield/sn-cli/releases/133958493","Warn: release artifact 0.3.4 does not have provenance: https://api.github.com/repos/jonhadfield/sn-cli/releases/136106310","Warn: release artifact 0.3.3 does not have provenance: https://api.github.com/repos/jonhadfield/sn-cli/releases/136098884","Warn: release artifact 0.3.2 does not have provenance: https://api.github.com/repos/jonhadfield/sn-cli/releases/136094212","Warn: release artifact 0.3.1 does not have provenance: https://api.github.com/repos/jonhadfield/sn-cli/releases/134599575","Warn: release artifact 0.3.0 does not have provenance: https://api.github.com/repos/jonhadfield/sn-cli/releases/133958493"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3787 / GHSA-fv92-fjc5-jj9h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T05:43:58.633Z","repository_id":45514548,"created_at":"2025-08-20T05:43:58.633Z","updated_at":"2025-08-20T05:43:58.633Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28981893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T15:35:50.179Z","status":"ssl_error","status_checked_at":"2026-02-01T15:35:38.075Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["cli","notes","sn-cli","standard","standardnotes"],"created_at":"2024-07-31T03:00:32.024Z","updated_at":"2026-02-01T16:00:39.489Z","avatar_url":"https://github.com/jonhadfield.png","language":"Go","funding_links":[],"categories":["Go","Tools"],"sub_categories":["Command Line"],"readme":"# 📝 sn-cli\n\n\u003e A modern command-line interface for [Standard Notes](https://standardnotes.org/)\n\n[![Build Status](https://www.travis-ci.org/jonhadfield/sn-cli.svg?branch=master)](https://www.travis-ci.org/jonhadfield/sn-cli) [![Go Report Card](https://goreportcard.com/badge/github.com/jonhadfield/sn-cli)](https://goreportcard.com/report/github.com/jonhadfield/sn-cli) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## ✨ Features\n\n- **📋 Notes \u0026 Tasks**: Create, edit, and manage notes and checklists\n- **🔍 Full-Text Search**: Search across titles and content with fuzzy matching and regex support\n- **📤 Migration**: Export to Obsidian with automatic Maps of Content (MOC) generation\n- **🏷️ Tags**: Organize content with flexible tagging\n- **📊 Statistics**: Detailed analytics about your notes and usage\n- **🔐 Secure Sessions**: Keychain integration for macOS and Linux\n- **⚡ Fast Sync**: Efficient synchronization with Standard Notes servers\n- **🔄 Multi-Platform**: Windows, macOS, and Linux support\n\n## 🚀 Quick Start\n\n### Installation\n\n**Download the latest release:**\n```bash\n# macOS/Linux\ncurl -L https://github.com/jonhadfield/sn-cli/releases/latest/download/sncli_$(uname -s)_$(uname -m) -o sn\nchmod +x sn \u0026\u0026 sudo mv sn /usr/local/bin/\n\n# Or via direct download\n# Visit: https://github.com/jonhadfield/sn-cli/releases\n```\n\n### First Run\n\n```bash\n# See all available commands\nsn --help\n\n# Add a note\nsn add note --title \"My First Note\" --text \"Hello, Standard Notes!\"\n\n# List your notes\nsn get notes\n\n# View statistics\nsn stats\n```\n\n## 📋 Commands\n\n| Command | Description |\n|---------|-------------|\n| `add` | Add notes, tags, or tasks |\n| `delete` | Delete items by title or UUID |\n| `edit` | Edit existing notes |\n| `get` | Retrieve notes, tags, or tasks |\n| `search` | Full-text search across notes (supports fuzzy matching and regex) |\n| `migrate` | Migrate notes to other applications (Obsidian, etc.) with MOC generation |\n| `tag` | Manage tags and tagging |\n| `task` | Manage checklists and advanced checklists |\n| `stats` | Display detailed statistics |\n| `session` | Manage stored sessions |\n| `register` | Register a new Standard Notes account |\n| `resync` | Refresh local cache |\n| `wipe` | Delete all notes and tags |\n\n*Note: Export and import are temporarily disabled due to recent Standard Notes API changes*\n\n## 🔐 Authentication\n\n### Environment Variables\n```bash\nexport SN_EMAIL=\"your-email@example.com\"\nexport SN_PASSWORD=\"your-password\"\nexport SN_SERVER=\"https://api.standardnotes.com\"  # Optional for self-hosted\n```\n\n### Session Storage (Recommended)\nStore encrypted sessions in your system keychain:\n\n```bash\n# Add session (supports 2FA)\nsn session --add\n\n# Add encrypted session\nsn session --add --session-key\n\n# Use session automatically\nexport SN_USE_SESSION=true\n# or\nsn --use-session get notes\n```\n\n## 🆕 Recent Updates\n\n### Version 0.4.1 (2026-01-30)\n- 🔐 **Fixed**: Authentication issues with updated dependencies\n- 🏷️ **Improved**: Tag cloud visualization with offline support\n- 🛡️ **Enhanced**: Network error handling and graceful degradation\n- 🐛 **Fixed**: Tag reference matching and display issues\n\n### Version 0.4.0 (2026-01-29)\n- 💾 **Added**: Backup and restore functionality\n- 📤 **Added**: Enhanced export with multiple formats\n- 🎨 **Added**: Tag cloud visualization\n- 📝 **Added**: Note templates system\n\n**[View full changelog →](CHANGELOG.md)**\n\n## 💡 Examples\n\n```bash\n# Create a note with tags\nsn add note --title \"Meeting Notes\" --text \"Important discussion points\" --tag work,meetings\n\n# Find notes by tag\nsn get notes --tag work\n\n# Search for notes (searches both title and content)\nsn search --query \"meeting\"\n\n# Fuzzy search with limit\nsn search --query \"mtng\" --fuzzy --limit 5\n\n# Case-sensitive regex search\nsn search --query \"TODO|FIXME\" --regex --case-sensitive\n\n# Search within specific tags\nsn search --query \"project\" --tag work\n\n# Create a checklist\nsn add task --title \"Todo List\" --text \"- Buy groceries\\n- Call dentist\\n- Finish project\"\n\n# View your note statistics\nsn stats\n\n# Edit a note\nsn edit note --title \"Meeting Notes\" --text \"Updated content\"\n```\n\n### 🔍 Search Feature\n\nThe `search` command provides powerful full-text search across all your notes:\n\n**Basic Usage:**\n```bash\n# Simple search\nsn search --query \"keyword\"\nsn search -q \"keyword\"  # Short form\n```\n\n**Search Options:**\n```bash\n--query, -q     Search query (required)\n--content, -c   Search in note content (default: true)\n--fuzzy, -f     Enable fuzzy matching for typo tolerance\n--case-sensitive  Make search case-sensitive (default: false)\n--tag           Filter results by tag\n--limit, -l     Limit number of results (default: unlimited)\n--output        Output format: table, rich, json, yaml (default: table)\n```\n\n**Advanced Examples:**\n```bash\n# Regex pattern matching\nsn search -q \"bug-[0-9]+\" --regex\n\n# Fuzzy search (matches similar terms)\nsn search -q \"imprtant\" --fuzzy\n\n# Case-sensitive search in work-tagged notes\nsn search -q \"Project\" --case-sensitive --tag work\n\n# Get top 10 results in rich format\nsn search -q \"todo\" --limit 10 --output rich\n\n# Search only in titles (faster)\nsn search -q \"meeting\" --content=false\n```\n\n**Search Features:**\n- Searches both note titles and content by default\n- Highlights matching terms in results\n- Shows context snippets around matches\n- Sorts results by relevance (title matches score higher)\n- Supports multiple output formats with syntax highlighting\n\n### 📤 Migration to Other Applications\n\nExport your notes to other platforms with intelligent organization:\n\n```bash\n# Basic export to Obsidian\nsn migrate obsidian --output ./my-vault\n\n# Export with automatic MOC generation\nsn migrate obsidian --output ./vault --moc\n\n# Export specific tags only\nsn migrate obsidian --output ./vault --tag-filter work,projects\n\n# Preview migration without writing files\nsn migrate obsidian --output ./vault --dry-run\n```\n\n**Features:**\n- Automatic MOC (Maps of Content) generation\n- Tag preservation in YAML frontmatter\n- Metadata preservation (dates, UUIDs)\n- Multiple organizational styles\n- Wikilink formatting\n\n**Output Structure:**\n```\nmy-vault/\n├── Home.md              # Main entry point\n├── Work MOC.md          # Category MOCs\n├── Learning MOC.md\n└── ... (all your notes)\n```\n\n## ⚙️ Advanced Configuration\n\n### Shell Completion\n\nTab completion is available for Bash, Zsh, Fish, and PowerShell.\n\n**Quick Install (Bash on macOS):**\n```bash\nbrew install bash-completion@2\nsudo cp autocomplete/bash_autocomplete /usr/local/etc/bash_completion.d/sncli\necho '[ -f /usr/local/etc/bash_completion ] \u0026\u0026 . /usr/local/etc/bash_completion' \u003e\u003e ~/.bash_profile\nsource ~/.bash_profile\n```\n\n**Quick Install (Fish):**\n```bash\nmkdir -p ~/.config/fish/completions\ncp autocomplete/fish_autocomplete.fish ~/.config/fish/completions/sncli.fish\n```\n\n📖 **For detailed installation instructions for all shells, see [autocomplete/README.md](autocomplete/README.md)**\n\n### Self-Hosted Servers\n```bash\nexport SN_SERVER=\"https://your-standardnotes-server.com\"\n```\n\n## 🔧 Development\n\n```bash\n# Build from source\ngit clone https://github.com/jonhadfield/sn-cli.git\ncd sn-cli\nmake build\n\n# Run tests\nmake test\n\n# View all make targets\nmake help\n```\n\n## ⚠️ Known Issues\n\n- New accounts registered via sn-cli require initial login through the official web/desktop app to initialize encryption keys\n\n## 🤝 Contributing\n\nContributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🔗 Links\n\n- [Standard Notes](https://standardnotes.org/) - The note-taking app this CLI supports\n- [Releases](https://github.com/jonhadfield/sn-cli/releases) - Download the latest version\n- [Issues](https://github.com/jonhadfield/sn-cli/issues) - Report bugs or request features\n\n---\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonhadfield%2Fsn-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonhadfield%2Fsn-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonhadfield%2Fsn-cli/lists"}