AscendOps — AI agent operating system for property management teams. Built on cortextos by grandamenium.
Persistent 24/7 Claude Code agents you control from Telegram.
Who this is for: Property management operators (single-owner, small team, or growing portfolio) who want AI agents handling work-order triage, vendor dispatch, leasing pipeline, and resident comms — running on your Mac mini or Linux box, controlled from Telegram. Skool community install path takes ~30 minutes.
Self-hosted by design: AscendOps runs on your Mac mini, Linux VPS, or Windows machine. Your data, credentials, and Slack tokens never touch our infrastructure — there is no managed SaaS tier and never will be.
AscendOps runs Claude Code as a fleet of persistent agents — 24/7, multi-agent, controlled from Telegram. Each agent has its own role (orchestrator, analyst, specialist), shared state via a file bus, and survives crashes + 71-hour Claude session boundaries automatically.
Think: Claude Code, but as your team — not a tool you open.
Telegram chat
You: Morning. What did you ship overnight?
Boss: Overnight recap: completed 4 tasks, ran 2 theta-wave
experiments, drafted 3 content scripts. One item needs
your approval — email the beta waitlist.
You: approve
Boss: Sent. Email delivered to 47 recipients. Task closed.
You: Add a cron to check my inbox every morning at 8am.
Boss: Done. "morning-inbox" cron set — runs daily at 08:00.
Saved to crons.json — survives restarts automatically.
You already use Claude Code as a developer. AscendOps is what happens when you turn it into infrastructure: agents that run while you sleep, coordinate with each other, and surface decisions to you on your schedule, not theirs.
Built for:
Not built for:
claude-code (default), OpenAI’s codex-app-server, or Hermes. All runtimes share the same bus, crons, dashboard, and Telegram integration; pick per-agent.flowchart TB
Operator[PM Operator]
Telegram[Telegram]
Daemon[AscendOps Daemon]
MD[Maintenance Director]
LC[Leasing Coordinator]
PM[Property Meld]
Vendors[Vendors]
Residents[Residents]
Operator <--> Telegram
Telegram <--> Daemon
Daemon --> MD
Daemon --> LC
MD --> PM
LC --> PM
PM --> Vendors
PM --> Residents
Every agent is its own PTY-spawned Claude / Codex / Gemini process. The daemon handles spawn, restart, and heartbeat health. Inter-agent communication runs over a file-based bus — no network, no broker. Hooks fire on bus events for custom routing and observability.
git clone→npm install→npm run build→ init org → add 2 persona agents → start daemon → message your agents on Telegram. ~30 min total if accounts are ready.
Prereqs: Node.js 20+, Claude Code CLI authenticated, Telegram bot token from @BotFather.
# Install
curl -fsSL https://raw.githubusercontent.com/noogalabs/ascendops/main/install.mjs | node
# Open in Claude Code + run guided onboarding
claude ~/ascendops
> /onboarding
/onboarding handles dependency checks, org setup, bot creation, PM2 config, and dashboard launch. Your Orchestrator comes online in Telegram and finishes its own setup there.
If you joined via the Skool community and want the two reference personas (Maintenance Director + Leasing Coordinator) running in 30 minutes, follow SKOOL-INSTALL.md instead of the install script above. It’s a linear happy-path guide with all credentials pre-listed.
More setup details in CONTRIBUTING.md and the environment variable reference in README.envs.md.
| Template | Best for |
|---|---|
orchestrator |
Your “boss” agent. Coordinates the fleet, runs morning + evening reviews, gates approvals. |
analyst |
System health, metrics, theta-wave autoresearch. |
agent |
General-purpose worker. Base for specialist agents. |
agent-codex |
Codex-runtime worker, scaffolds with runtime: codex-app-server and model: gpt-5-codex (see templates/agent-codex/) |
agent-maintenance-director |
PM persona — work-order triage, vendor dispatch coordination, resident comms, follow-up tracking. Shipped with the Skool release. |
agent-leasing-coordinator |
PM persona — prospect intake, showings, applications, lease docs, move-in coordination. Shipped with the Skool release. |
property-management/agent |
Pre-configured for PropertyMeld + maintenance ops. |
Add a codex agent the same way you add a claude agent:
cortextos add-agent reindexer --template agent-codex --org myorg
# or, equivalently, with the runtime flag on the default template:
cortextos add-agent reindexer --runtime codex-app-server --org myorg
Codex agents share the same bus, crons, and dashboard surfaces as claude agents — they only differ in which model handles each turn.
runtime fieldEvery agent’s config.json carries an explicit runtime field that the daemon dispatches on. Valid values:
| Runtime | Adapter | Default model | Skills location |
|---|---|---|---|
claude-code |
ClaudePTY (default) |
claude-sonnet-4-6 | .claude/skills/<skill>/SKILL.md |
codex-app-server |
CodexAppServerPTY |
gpt-5-codex |
plugins/cortextos-agent-skills/skills/<skill>/SKILL.md (linked into ~/.codex/skills/<agent>__<skill>) |
hermes |
HermesPTY (experimental) |
model per config.json |
hermes-specific |
Pass --runtime <kind> on add-agent to set it at scaffold time, or edit the field in config.json and restart the agent. The default is claude-code. Today only --template agent (and the alias --template agent-codex) supports --runtime codex-app-server — pairing the codex runtime with --template orchestrator/analyst/m2c1-worker/hermes errors with a clean message until codex variants of those templates ship.
cortextos install # set up state directories
cortextos init <org> # create an organization
cortextos add-agent <name> # add an agent (--template, --org, --runtime)
cortextos enable <name> # enable agent in daemon
cortextos ecosystem # generate PM2 config
cortextos status # fleet health
cortextos doctor # check prerequisites
cortextos list-agents # list agents
cortextos dashboard # start web dashboard (--port 3000)
Run cortextos --help for the full CLI surface.
Every external action (email, deploy, delete, financial) requires explicit human approval. The guardrails system is self-improving: agents log near-misses and extend GUARDRAILS.md each session. Report vulnerabilities by opening a private security advisory on this repo.
Just shipped:
In flight (next ~30 days):
Longer horizon:
PRs welcome. See CONTRIBUTING.md for setup + code style. Framework-level patches go upstream to grandamenium/cortextos; AscendOps-specific patterns stay in this fork.
MIT — see LICENSE.
Built on cortextos by James (grandamenium). AscendOps adds property management integrations, agent templates, and operational tooling.