Basically the solution lets you experiment freely with your agent within safe boundaries.
It's deterministic on purpose (doesn't include any Al layer) which means the solution follows clear and already defined rules, to maximize safety/security and predictability.
Rules are heavily tested on detecting prompt injection attempts and other security cases (explained in detail in the docs).
Everything is local and lives on your computer including the docs site.
It gives you a control panel to monitor and control boundaries. When boundaries are about to get crossed you receive an approval request which lets you see what your openclaw was trying to do.
It also (currently) supports Tailscale, so you can connect your Tailscale IP address and receive everything on your phone and you can also chat normally, approve or deny requests. It lets access the control panel via your tailscale IP address (a private one is recommended) from anywhere. Currently only Telegram Channel is supported.
Only supports linux os for now and Opencode Claude Code & OpenClaw runners.
The things you need to get started are explained in the readme, also include quick demo/showcase images so you can see how it looks.
I'll be happy to hear feedback from you guys, especially having it tested against prompt injections to see how it handles it, don't hesitate to open a ticket on the GitHub for any issue that you found, I'll do my best to fix them.
Link here: https://github.com/steadeepanda/agent-ruler/
Thank you for reading. I'll be happy to discuss about it.
I wouldn’t use the word deterministic here. I would use the word symbolic. Determinism, meaning that you always get the same output on the same input, isn’t what you want here. For instance, you can use an LLM without temperature, etc. and its output will be deterministic. More over, if you had a symbolic, non-deterministic algorithm you would probably also be happy to use that.
I was trying to show that determinism is not the crux by pointing out that there are ways to get a deterministic output from an LLM. And that thought experiment shows that determinism isn’t what’s essential.
And I will disagree about merely narrowing the outputs. If I download a local model and set the temperature to zero and give it the same prompt twice, I will get the same output. Not one of several outputs in a narrow set. LLMs are functions.
Maybe here I should emphasize on the fact that it's external to any LLM? I don't know.