DEV Community

Cover image for Introducing Frak.js: Simple, Scriptable Code Deployments
Franklin Strube
Franklin Strube

Posted on

Introducing Frak.js: Simple, Scriptable Code Deployments

Frak.js is a rewrite of an internal tool we’ve relied on at work for years, rebuilt from the ground up with a single goal: make server administration simple, repeatable, and boring in the best way possible.

At its core, Frak.js uses two battle-tested tools you already trust:

  • ssh for running commands on remote machines
  • rsync for efficiently copying files to those machines

No agents. No background daemons. No magic.

Getting started is intentionally boring:

npx @frakjs/frak init
Enter fullscreen mode Exit fullscreen mode

That’s it. No global installs, no configuration rabbit holes. You’re up and running in seconds.

Why Frak.js Exists

Most deployment and server management tools fall into one of two categories:

  1. Too heavy — full configuration management systems that require learning an ecosystem, installing agents, and maintaining state.
  2. Too ad hoc — shell scripts and one-off commands that work until they don’t, then slowly drift into chaos.

Frak.js sits intentionally in the middle.

It assumes:

  • You’re comfortable with SSH access
  • You want explicit control over what runs and where
  • You don’t want to reinvent the same deployment scripts for every project

Frak.js doesn’t try to model your infrastructure. It helps you operate it.

How It Works (Conceptually)

A Frak.js workflow typically looks like this:

  1. Define what files should be synced to a remote server
  2. Define what commands should run before or after that sync
  3. Execute the workflow against one or more servers

Under the hood:

  • rsync handles file transfers efficiently
  • SSH executes commands remotely
  • Frak.js coordinates the order, structure, and repeatability

The result is a clear, auditable process that can live alongside your codebase.

Use Case 1: Hobby Projects and Side Projects

If you’ve ever deployed a personal project by:

  • SCP’ing files manually
  • SSH’ing in and running commands by memory
  • Hoping you didn’t forget a step

Frak.js is for you.

With a simple configuration, you can:

  • Sync your app to a VPS
  • Restart services
  • Run migrations or setup scripts

This makes deploying a hobby project feel intentional instead of fragile—without introducing heavyweight tooling that feels disproportionate to the project.

Use Case 2: Raspberry Pi and Home Servers

Raspberry Pi setups are notorious for being:

  • Manually configured
  • Poorly documented
  • Hard to reproduce after “just one more tweak”

Frak.js works well here because it:

  • Requires nothing running on the Pi except SSH
  • Lets you codify setup steps and updates
  • Makes it easy to manage multiple devices consistently

Whether you’re running a home media server, a Pi-hole, or a small cluster of devices, Frak.js gives you a repeatable way to apply changes without turning your home lab into a snowflake.

Use Case 3: Production Environments

Frak.js was born out of real production usage, and it shows.

For small teams or focused services, it can:

  • Deploy application updates
  • Run controlled administrative commands
  • Serve as a transparent alternative to opaque CI/CD magic

Because it relies on SSH and rsync, it integrates cleanly into existing security models and operational practices. There’s no black box—just clear steps you can reason about and debug.

Built to Be Understandable

One of the guiding principles behind Frak.js is clarity over cleverness.

You should be able to:

  • Read a Frak.js configuration and understand exactly what will happen
  • Run it locally without special infrastructure
  • Trust that it’s doing only what you told it to do

It’s not trying to replace Kubernetes, Terraform, or Ansible. It’s for the space where those tools feel like too much—and where shell scripts feel like too little.

What’s Next

Frak.js is still evolving, but its foundation is deliberately simple. If you:

  • Deploy code over SSH
  • Manage small-to-medium servers
  • Value explicit, repeatable workflows

…then Frak.js may already fit naturally into how you work.

More documentation, examples, and real-world workflows are coming soon.

See github.com/frakjs/frak

Top comments (0)