{"slug": "show-hn-candle-a-helpful-tool-for-running-local-dev-services", "title": "Show HN: Candle – a helpful tool for running local dev services", "summary": "Facetlayer released Candle 1.0, a local development process manager for Mac and Linux that runs services in the background and scopes them to the current project directory, installable via Homebrew or a curl script. Candle, built with AI coding agents and originally created in July 2025 as an MCP server for Claude Code, stores logs and process states in a single SQLite database in the ~/.local/state directory so multiple terminal sessions can share processes. The tool is positioned as a simpler alternative to systemd, pm2, supervisor, and Foreman for local development, and is not container based.", "body_md": "*(AI usage: No AI was used in writing this post)*\n\nCandle is a development tool I built (with the help of AI coding agents) for managing local services during development.\n\nIt's a process manager like `systemd`, `pm2`, `supervisor`, etc, but it's specifically\ndesigned for local development. So the usage is much simpler than other tools that\nare designed to manage services in production. It's similar to Foreman but makes some different decisions (listed below).\n\nOverall it's designed to work really well with coding agents, worktrees, and humans too. Hopefully you find it useful too.\n\n## Quick Start\n\nCandle is supported on Mac & Linux:\n\nTo get started with Homebrew on Mac:\n\n```\nbrew install facetlayer/tap/candle\n```\n\nOr direct installation for Mac & Linux:\n\n```\ncurl -fsSL https://raw.githubusercontent.com/facetlayer/candle/main/install.sh | sh\n```\n\nAt that point run `candle --help` for the full list of commands.\n\nAnd you can add this text to your AGENTS.md to get your coding agent to use it:\n\n## Backstory\n\nCandle development started in July 2025. At the time, Claude Code didn't have a way to run processes in the background in a non-blocking way, so I wrote the tool as an MCP server for Claude to fix that.\n\nToday, Claude Code and the other harnesses do have a much better builtin ability to run backgrounded processes. But I've found that Candle is still pretty useful.\n\nSo in the past year I've been using Candle for all my dev projects, and have iterated and experimented with various approaches for how it works, and at this point it's stable and ready for a 1.0 release.\n\n## The design\n\nHere are some of the major design decisions that Candle has:\n\n### 1. Not container based\n\nOne decision right off the bat is that I don't like to use Docker containers for local development. If you want to do container-based development, then there are other great existing tools for that, like Docker Compose.\n\n### 2. Processes are run in the background\n\nCandle manages processes in the background, which means that a service can be launched in a way that outlives the current session or terminal.\n\nThis matches 'real' process managers like `pm2`. It's different than other\nlocal-focused tools like Foreman, which runs its processes in the foreground.\n\nThe benefit is that multiple terminal sessions can work on the same shared processes.\nCommands like `candle logs` and `candle watch`\ncan look at processes that weren't launched by the current session.\n\nThe way it's centralized is through a single SQLite database in your ~/.local/state directory that stores logs and process states.\n\n### 3. Processes are scoped by project directory\n\nThis decision is a little more interesting and most process managers don't work this way.\n\nWhenever you run commands like `candle ps` or `candle start`, the processes that are listed\nor created are all **local to the current project directory**. If you run `candle` in a different\nproject, you'll see a different set of processes.\n\nSo, you can have worktrees like `~/dev/worktree-1` and `~/dev/worktree-2`,\nand since those are different directories, they will have a completely independent set of processes.\n\nExample of what it might look like:\n\n``` bash\n~/dev/worktree-1 $ candle start api\n[Started process 'api'] $ npm run api\n\n~/dev/worktree-1 $ candle ps\nNAME  STATUS   PID    UPTIME\n----  -------  -----  ------\napi   RUNNING  71497  2s\n\n~/dev/worktree-1 $ cd ../worktree-2\n\n~/dev/worktree-2 $ candle ps\nNAME  STATUS       PID  UPTIME\n----  -----------  ---  ------\napi   not running  -    -\n\n~/dev/worktree-2 $ candle start api\n[Started process 'api'] $ npm run api\n```\n\nThis helps the tool behave in a simple way. Each folder is more isolated, and you only see processes related to that folder. This helps keep things more simple and distraction-free for your agent and you.\n\nIt's similar to the way the `git` CLI works, which also operates implicitly on the current project directory.\n\n#### Notes on port assignment\n\nOne thing to call out is that if you're using multiple worktrees, you'll probably need some solution for unique port assignment. Otherwise trying to launch the same service twice with the same port will conflict.\n\nI tried implementing a version of Candle that had builtin support for port management,\nbut it made the tool a lot more complicated, so (in the 1.0 version at least), Candle doesn't help with unique port assignment.\nSo, you'll need some other strategy. The solution could be a `.env`\nfile in each worktree directory, which has environment variable definitions with unique port numbers.\n\n### 4. First class support for coding agents\n\nCandle has lots of small implementation choices to help it work better with coding agents, in addition to the things mentioned above (especially directory-scoped processes).\n\nOne of these is that Candle will try to stop your agent from running commands that are\nblocking or interactive. Specifically the\n`candle watch` command. What the `watch` command does is enter a mode where it streams logs\nas they happen, until the user kills it with Ctrl-C. It's great for humans but not ideal for coding agents.\nWith long-running processes, agents can make mistakes where they wrongly wait for the whole process to finish, or\nmaybe they forget to close the process when it's done.\n\nSo, if Candle detects that an agent is calling `watch`, it just prints an error and tells\nit to use `candle logs` instead. The `logs` command returns immediately, so it works much\nbetter for agents.\n\n### 5. Various quality of life commands\n\nThe tool also ships with a few QOL commands that I've found pretty useful along the way.\n\nIt includes port-checking commands like `candle list-ports`, which checks the operating\nsystem to find which ports your services are actually listening on.\n\nRelated to this is\n`candle open-browser` which uses the same port checking feature to open a browser window to look at `http://localhost:<your port>`\n(assuming your service is a web service).\n\nAnother one is `candle wait-for-log ...` which blocks (with a timeout) until a certain log message\nappears. This one works great in CI jobs that run functional/integration tests.\nYou can use `candle` commands in the job to make sure that the service fully starts up, before\nstarting the test run.\n\n## Installation\n\nAnyway that's the tool! If you're interested in using Candle, installation instructions are here: [https://github.com/facetlayer/candle#installation](https://github.com/facetlayer/candle#installation)", "url": "https://wpnews.pro/news/show-hn-candle-a-helpful-tool-for-running-local-dev-services", "canonical_source": "https://andyfischer.dev/blog/introducing-candle/", "published_at": "2026-10-05 01:51:12+00:00", "updated_at": "2026-10-05 02:13:06.368884+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents"], "entities": ["Candle", "Facetlayer", "Claude Code", "Homebrew", "SQLite", "systemd", "pm2", "Foreman"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-candle-a-helpful-tool-for-running-local-dev-services", "markdown": "https://wpnews.pro/news/show-hn-candle-a-helpful-tool-for-running-local-dev-services.md", "text": "https://wpnews.pro/news/show-hn-candle-a-helpful-tool-for-running-local-dev-services.txt", "jsonld": "https://wpnews.pro/news/show-hn-candle-a-helpful-tool-for-running-local-dev-services.jsonld"}}