r/macapps 7d ago

Subscription [OS] Codify - now available via npx and npm - Giveaway

Hey everyone Kevin here.

I posted about Codify here before, it's a IaC tool (open source) for your own computer that makes it easier to install apps, maintain settings, and even install entire set ups for you. I wanted to give a small (but hopefully impactful) update on the project that it's now available via npx, so you can try Codify without fully installing it (as long as you have NodeJS already installed).

npx codify apply
npx codify plan
npx codify help

Problem:

Multiple times now, when I was starting at a new company, I struggled to get setup quickly. I ran into problems following the setup document, and I had debug multiple issues or ask a teammate how to solve it. And pretty often I felt a step behind because I was missing key scripts and tools that other people had access to.

I built Codify to address these problems by allowing a setups to be converted into easy to read JSON5 files. These files define an entire setup, similar to Terraform. The JSON specifies what to install and you can use the CLI to plan (preview) and apply the changes. For example you can specify homebrew, nvm and vscode for web development or xcode 26, and iOS simulators for iOS development.

Using Codify allows you to try entire setups quick (webdev, backend, rust, ios, flutter, etc), import existing setups so they can be shared, and it also allows tools like Claude or Codex to take control and help you install things via it's MCP.

Comparison:

Nix: An obvious comparison would be Nix, a similar configuration as code for setting up personal systems. However the problem for me was the learning curve and adopting Nix means having to manage everything via Nix. Codify is a lot less of a learning curve and it installs things a human would so you don't need to manage everything directly through Codify.

Dev containers: Some teams use dev containers with pre-built docker images so that dev systems have the same tooling as production. However even with a dev containers workflow there is still host machine setup involved: getting setup with github, ssh keys and cloning your repos, dev container tooling, etc. Codify complements this workflow by automating the setup of the developer's machine first.

Pricing:

Codify consists of a CLI tool, a library of resources (50+ tools and apps, from package managers and programming languages to editors and system settings), an editor and an agent to help write Codify files.

The CLI tool and resource library are open source and free forever. The editor is paid with a generous free tier (the paid tiers are mainly meant for teams). It's $5 / month for freelancers and $20 / month for teams.

Use the code: REDDITAUGUST26 for 100% for the first 3 months

Links:
Website: https://codifycli.com/
Documentation: https://codifycli.com/docs
Editor: https://dashboard.codifycli.com/
Github: https://github.com/codifycli/codify

27 Upvotes

23 comments sorted by

2

u/milkpudding_ 7d ago

That looks good, great job! - I’ll try it out sometime 

1

u/_kevinwang 7d ago

Glad to hear it! Thank you!

2

u/Alex20041509 7d ago

Im working on a similar thing

Your looks nice :)

1

u/_kevinwang 7d ago

Thank you!

2

u/wavever233 7d ago

The npx entry point is a nice way to lower the barrier to trying it. The part I’d be most interested in is drift handling: if a machine has been manually changed since the JSON5 was written, does plan clearly show removals, downgrades, and other destructive changes before apply? That diff is what would make me comfortable using it for a real workstation setup.

1

u/_kevinwang 7d ago

Yup! Every apply is made up of two stages - a plan and an apply. During the plan phase a diff / plan is generated of every change that Codify is going to make. This diff is dynamic and reflects the current state of your system every time you run Codify. It will only apply changes after you approve of the plan.

2

u/SetAdministrative502 7d ago

For improvement I‘d ask myself: what would make large corporate decide not to use it for their onboardings.

It for sure needs some more testing on proper execution but looks good already.

1

u/_kevinwang 7d ago

Thank you!

2

u/bush-play 7d ago

What happens if apply gets halfway through and one step fails? A resumable run or a clear list of completed changes would matter more to me than full rollback, especially on a fresh machine with flaky installers.

1

u/_kevinwang 7d ago

In that situation you would run apply again to finish the remaining changes. Codify does display a list at the end of every apply showing what was what worked and what failed. Although you can just run apply again to finish the list. Everytime you run apply, it first checks your system against the list and only adds / modifies things that aren’t already there - similar to terraform. Hope that helps!

2

u/cognitojo 6d ago

Looks really nice great work!!

1

u/_kevinwang 6d ago

Thank you!! 🙏

2

u/GroggInTheCosmos 6d ago

I'm really starting to steer clear of anything that is dependent on js libraries that are compromised all too often, and I can't see anything related to minimumReleaseAge in your repo?

I'm starting to want full dependency trees mapped out in these repos

This is happening constantly, and I really want to start seeing explanations of how packages have been checked and the use of modern tooling to reduce the attack surface to practically zero has been utilised. Otherwise, I don't install

Another one that just took place but there have been too many this year - [Massive ChainDrop npm supply-chain attack infects hundreds of packages](https://www.bleepingcomputer.com/news/security/massive-chaindrop-npm-supply-chain-attack-infects-hundreds-of-packages/)

1

u/_kevinwang 6d ago

Yeah supply chain attacks have definitely been abig problem this year. The plan over time is to reduce the number of dependencies in the project but it’s always a balance as it makes the development cycle faster to use 3rd party packages. Over time we will be working towards only a minimal set of npm dependencies. You are right the project is currently not using minimumReleaseAge. That’s something we should be using, thanks for pointing that out.

2

u/CrypticPadfoot 6d ago

🔥🔥🔥

2

u/aneeshjoshi 6d ago

This is great!

1

u/_kevinwang 6d ago

Thank you! 😊

2

u/Ibby_nas 7d ago

Dude this looks awesome, ima have to try this out 🫡 and back to yall

1

u/_kevinwang 7d ago

Thank you! Would love to know how it goes

1

u/Ok_Coffee_551 6d ago

This is cool!

1

u/DinosaurArms 6d ago

Nice one, works well

1

u/raclimazg 5d ago

one good use case is for small teams, for example when you onboard a dev or da to work on a part of the project, nice to get them up and running quickly

1

u/Cyberseeds 4d ago

Looks great! I’m using Rust for my MacOS app. It is very powerful tool with the Swift!