sendit has 19 direct runtime dependencies and 1 direct test dependency. All are permissive open-source licences compatible with the project’s MIT licence.

The module graph is managed with go mod tidy and kept minimal — no dependency appears that cannot be justified by the table below.

Direct dependencies

ModuleVersionLicencePurpose
github.com/charmbracelet/bubbleteav1.3.10MITElm-architecture TUI framework — powers the --tui terminal dashboard
github.com/charmbracelet/lipglossv1.1.0MITStyle definitions for the terminal UI (bold labels, colour-coded counters)
github.com/chromedp/chromedpv0.15.1MITBrowser automation via the Chrome DevTools Protocol — powers the browser driver
github.com/coder/websocketv1.8.15ISCWebSocket client — powers the websocket driver
github.com/miekg/dnsv1.1.72BSD-3-ClauseFull-featured DNS client and server library — powers the dns driver
github.com/pkg/sftpv1.13.11BSD-2-ClauseSFTP client and test server — powers the sftp driver
github.com/prometheus/client_golangv1.23.2Apache-2.0Prometheus metrics exposition (/metrics endpoint)
github.com/robfig/cron/v3v3.0.1MITCron expression parser — used by scheduled pacing mode to define active windows
github.com/rs/zerologv1.35.1MITZero-allocation structured logger; zerolog.Nop() used internally for no-op metrics
github.com/shirou/gopsutil/v3v3.24.5BSD-3-ClauseCross-platform CPU and memory utilisation polling — powers the resource admission gate
github.com/spf13/cobrav1.10.2Apache-2.0CLI framework — commands, flags, and shell completion generation
github.com/spf13/viperv1.21.0MITConfig file loading with environment variable overlay and mapstructure unmarshalling
golang.org/x/cryptov0.54.0BSD-3-Clausessh subpackage — SSH transport and algorithm policy controls for the sftp driver
golang.org/x/netv0.57.0BSD-3-Clausehtml subpackage — HTML parser used by the generate command to extract links
golang.org/x/timev0.15.0BSD-3-Clauserate subpackage — token-bucket rate limiter used by rate_limited and scheduled pacing
google.golang.org/grpcv1.82.0Apache-2.0gRPC client and server — powers the grpc driver; includes reflection client and health service
google.golang.org/protobufv1.36.11BSD-3-ClauseDynamic protobuf messages and JSON/protobuf marshaling for the reflection-based grpc driver
howett.net/plistv1.0.1BSD-2-ClauseProperty-list parser used by generate to read Safari bookmarks
modernc.org/sqlitev1.53.0BSD-3-ClausePure-Go SQLite driver (CGo-free) — used by generate to read Chrome/Firefox history and bookmark databases

Test dependencies

ModuleVersionLicencePurpose
github.com/cucumber/godogv0.15.1MITCucumber/Gherkin BDD test framework — powers the features/auth.feature behavioural tests for the auth block

Alternatives considered

The following alternatives were evaluated during the v0.13.3 audit and ruled out:

DependencyAlternative consideredDecision
golang.org/x/net/htmlstdlibNo stdlib equivalent — x/net/html is the canonical Go HTML parser
golang.org/x/time/ratestdlibNo stdlib token-bucket; time.Ticker cannot express burst semantics
golang.org/x/crypto/sshstdlibNo SSH client in the standard library; x/crypto/ssh is the maintained Go SSH implementation
github.com/pkg/sftphand-rolled SFTP packetsReusing the established SFTP client avoids implementing protocol framing and extension handling locally
github.com/spf13/viperstdlib os.Getenv + manual YAMLViper provides env-override, defaults, and mapstructure in one — justified for config complexity
github.com/rs/zerologstdlib log/slog (Go 1.21+)zerolog’s zero-allocation design and Nop() no-op are better suited for high-throughput dispatch paths

Licence compatibility

All dependency licences are permissive and compatible with the project’s MIT licence:

LicenceDependencies
MITbubbletea, lipgloss, chromedp, cron/v3, zerolog, viper
ISCcoder/websocket
BSD-2-Clausepkg/sftp, howett.net/plist
BSD-3-Clausemiekg/dns, gopsutil/v3, x/crypto, x/net, x/time, google.golang.org/protobuf, modernc.org/sqlite
Apache-2.0prometheus/client_golang, cobra, google.golang.org/grpc

ISC, BSD-2-Clause, and BSD-3-Clause are functionally equivalent to MIT for distribution purposes. Apache-2.0 is compatible with MIT when distributing binaries (no copyleft restriction).