Most "AI agents" I've tried are prompt-first: you type something, they answer, they stop. I wanted something closer to an actual assistant — one that notices what's happening on my machine and decides whether to act, without me opening a chat window first. That's why I built Stram.
Repo: https://github.com/CodeInfinity1/Stram (MIT licensed, v1.0.1)
What it is
Stram is the runtime, desktop app, and release surface for Janus, the agent that lives inside it. Janus isn't a chatbot waiting for your next message — it's designed to be always-available, context-aware, and able to take the next safe step through governed tools on its own.
How it works
The flow looks like this:
\text
stimulus
-> interaction harness
-> compact local context
-> model-led attention/planning
-> schema-validated tool calls
-> policy and approval gates
-> execution and audit timeline
-> memory, learning, recovery, and response synthesis
\\
Broken down:
- Collectors watch opted-in surfaces — active app, browser, files, shell output, channels, voice — and turn raw events into structured signals instead of dumping raw private data into a prompt.
- Attention ranks those signals by urgency, relevance, and risk before the model ever plans anything, so not every event becomes an action.
- Janus decides the right posture: respond immediately, observe quietly, ask for clarification, draft a reply, monitor a condition, or request approval.
- Governance means anything risky — shell execution, browser mutation, sending a message — pauses for your explicit approval, with a recorded audit trail (tool, purpose, risk, proposed arguments).
- Memory keeps goals, commitments, environment facts, and lessons durable across sessions, separated by job so the right thing gets recalled for the right reason.
Everything runs against your own model provider key — OpenAI, Anthropic, Groq, local Ollama, whatever you point it at. No hosted backend of mine sits in the loop.
Try it
\bash
git clone https://github.com/CodeInfinity1/Stram.git
cd Stram
python3 -m pip install -e ".[browser,pdf,ocr,office,test]"
python3 -m stram run "system_status {}" --workspace . --planner explicit
\\
Or start the local API + dashboard:
\bash
python3 -m stram serve --workspace . --port 8765
\\
Native macOS (Swift) and Windows (.NET) desktop shells are also available in the repo under apps/\.
Where it actually stands
I'd rather be upfront about this than have you find out the hard way:
- v1.0.1, early. The core runtime, tool contracts, and safety gates have automated test coverage, but real collector/channel/desktop behavior depends on the credentials and platform you configure.
- Binaries aren't code-signed or notarized yet. You'll hit a Gatekeeper warning on macOS or a SmartScreen warning on Windows on first run — there are documented workarounds in the README, real signing is on the roadmap.
- You need your own model API key (or a local Ollama model) — nothing works out of the box without one.
Where I'd love help
- Testing on macOS/Windows setups I don't have access to
- Poking holes in the approval/safety layer — this thing can touch your shell and browser, so I want skeptics on it before it touches anyone else's
- Adding collector coverage for browsers/apps I haven't wired up
- Docs — a lot of it is still written for people already deep in the code, not first-time readers
CONTRIBUTING.md has contribution priorities and PR expectations, SECURITY.md covers the safety model in depth.
Feedback - especially critical feedback, is genuinely welcome in the comments.
Top comments (0)