$ systemctl is-enabled yourappIt runs until the server restarts, then it's gone
Started by hand once, and nothing remembers to start it again.
Seen in apps built with Replit.
Replit Agent projects ship a real backend — a server directory, an API, or Drizzle.
100 confirmed Replit Agent repositories, read 2026-08-03 · method and scripts in the measurements
What is actually happening
Replit Agent is the one builder in this group that regularly produces a full application rather than a front end talking to somebody else's API. That is usually an advantage — and it changes what breaks.
A process started from a terminal belongs to that terminal. Close it, or restart the machine, and the process ends. Nothing about the code is wrong; nobody arranged for it to be started again.
The gap is invisible until the first restart, which is why it usually surfaces weeks later, at an unrelated moment — a security update, a host reboot, a crash.
Confirm it in one command
systemctl is-enabled yourapp
`enabled` means it starts on boot. `disabled` means it is running now and will not be after a restart. An error means nothing is registered at all.
Fixing it yourself
- On a Linux server, a systemd unit with `Restart=always` and `WantedBy=multi-user.target`.
- The second line is the one people miss: without `systemctl enable`, the service runs now and never again after a reboot.
- Verify it the only way that counts — reboot the machine and watch it come back.
Where it stops being a small job
When the app also needs a database, a queue or a scheduled job to come back in the right order. Then you are arranging a system rather than a process, and the failure modes stop being obvious.
If it also needs a database or a scheduled job to come back, and in the right order, then it is a system rather than a process. Send the address and say what else has to be running.
Send us the app