Skip to content

Commit bbd28bf

Browse files
authored
Merge pull request #231 from adamgell/docs/v1-readme-refresh
docs: refresh README for the v1.0 Rust/WinUI rewrite
2 parents 88e4124 + 33fcf1c commit bbd28bf

1 file changed

Lines changed: 41 additions & 82 deletions

File tree

README.md

Lines changed: 41 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,71 @@
11
# IntuneCommander
22

3+
![Intune Commander](docs/images/logo_small.png)
4+
35
> A Windows-native control plane for **Microsoft Intune / Entra device management** — a Rust +
46
> WinUI 3 client over a hard-forked .NET Graph engine, with a persistent, searchable **audit / drift
57
> time-machine** and a human-gated automation layer on top. **MIT licensed.**
68
7-
**Version 1.0 is a ground-up rewrite.** IntuneCommander started as a .NET 10 + React desktop app +
8-
`ic.exe` CLI (the `v0.x` releases). v1.0 replaces that shell with a **native Rust/WinUI 3 client** and
9-
a **.NET sidecar** — same brand, same Graph engine (hard-forked into [`service/Core/`](./service/Core/)),
10-
plus the time-machine, diagnostics suite, and automation layers the old app never had. The legacy
11-
.NET/React app is preserved in the `v0.x` tags and this repo's history.
12-
13-
> **Status:** first public beta, **`v1.0.0-beta.1`**. It's a working application — full CRUD across
14-
> ~42 surfaces, the time-machine, the diagnostics suite, and most of the platform layer (device
15-
> actions, GitOps, simulator, twin, posture, fleet, ecosystem) are implemented. Grab a signed build
16-
> from **[Releases](../../releases)**.
17-
18-
> **Codename:** some build files and internal docs still use the codename **`cmProjectX`** (the repo
19-
> directory, `CmProjectX.*` .NET namespaces, `*.slnx`). The product name is **IntuneCommander**.
9+
**[intunecommander.com](https://intunecommander.com)** · **[Download the beta](https://github.com/adamgell/IntuneCommander/releases)**
2010

2111
---
2212

23-
## Download & install
13+
## v1.0 is a ground-up rewrite
2414

25-
Signed installers (Windows 11, **ARM64** primary + **x64**) are on the
26-
**[Releases](../../releases)** page — MSI + MSIX, code-signed with **Azure Trusted Signing**, built
27-
with **[Master Packager Dev](https://www.masterpackager.com/)**:
15+
IntuneCommander started as a **.NET 10 + React** desktop app plus an `ic.exe` CLI (the **`v0.x`**
16+
releases). **v1.0** replaces that shell with a **native Rust / WinUI 3 client** and a **.NET
17+
sidecar** — same brand, same Graph engine — plus a time-machine, a diagnostics suite, and automation
18+
layers the old app never had.
2819

29-
- `IntuneCommander-<version>-<arch>.msi` — recommended (Program Files + Start-Menu shortcut)
30-
- `IntuneCommander-<version>-<arch>.msix` — MSIX / App-Installer / managed deployment
31-
- `IntuneCommander-<version>-win-<arch>.zip` — portable (run `Start-IntuneCommander.cmd`)
20+
> **Where the code lives:** v1 is being finalized on the
21+
> **[`v1` branch](https://github.com/adamgell/IntuneCommander/tree/v1)** and will become the default
22+
> branch shortly. This `main` branch still holds the legacy v0.x .NET/React app, preserved in the
23+
> `v0.x` tags and this repo's history.
3224
33-
Requires the **[Windows App SDK runtime](https://learn.microsoft.com/windows/apps/windows-app-sdk/downloads)**;
34-
the .NET runtime is bundled. Prereqs + a smoke test are in [`docs/RUNBOOK.md`](./docs/RUNBOOK.md).
35-
36-
> ⚠️ **Writes hit your live tenant — there is no sandbox.** A diff-preview → confirm gate protects
37-
> every change, but a confirmed change is real. Start on low-risk surfaces (Scope Tags, Device
38-
> Categories). Conditional Access is read-only by design.
25+
> **Status:** first public beta — **`v1.0.0-beta.1`**. Full CRUD across ~42 surfaces, the
26+
> time-machine, and the diagnostics suite are implemented. Grab a signed build from
27+
> **[Releases](https://github.com/adamgell/IntuneCommander/releases)**.
3928
4029
---
4130

42-
## Architecture
43-
44-
A **two-process desktop app**: a thin Rust/WinUI client talks to a local .NET sidecar over loopback.
45-
All Graph/Intune coverage lives in the sidecar; the client is data-driven.
46-
47-
```
48-
app/ Rust + WinUI 3 (Windows Reactor) ──HTTP/REST──▶ service/ .NET 10 sidecar
49-
• Reactor reactive UI (hooks model) 127.0.0.1:5099 • Api/ minimal-API host (~280 routes)
50-
• api_client.rs (blocking reqwest) • Core/ hard-forked Graph engine (~60 services)
51-
• crates/api-types (shared DTOs) • Sync/ Graph delta sync + autonomy watcher
52-
contract/openapi.yaml ────────────• Store/ SQLite + Lucene time-machine
53-
(one schema → both sides)
54-
```
55-
56-
- **The client owns the sidecar**`app/src/sidecar.rs::ensure_running()` spawns (or borrows) it on
57-
launch; `cargo run -p app` boots the whole stack.
58-
- **`contract/openapi.yaml` is the single source of truth** for shared DTOs/endpoints (Rust + C#
59-
types mirror it byte-for-byte over JSON).
60-
- **Two storage layers:** an append-only **audit/drift time-machine** (`service/Store/`, SQLite +
61-
Lucene) and a read-through **blob cache** (`service/Api/Endpoints/CachedReader.cs`, LiteDB).
62-
- Loopback-only, single-instance mutex; no inbound HTTP auth — "auth" is per-tenant Entra sign-in
63-
applied to the outbound Graph client.
64-
65-
See [`AGENTS.md`](./AGENTS.md) (canonical operating guide) and [`CLAUDE.md`](./CLAUDE.md).
66-
6731
## What it does
6832

69-
- **~42 Intune/Entra surfaces** with a consistent view → edit → clone → delete → assign flow
70-
(diff-preview + confirm before every write; full CRUD on ~29 writable surfaces).
33+
- **~42 Intune/Entra surfaces** — a consistent view &rarr; edit &rarr; clone &rarr; delete &rarr;
34+
assign flow, with a diff-preview + confirm gate before every write (full CRUD on ~29 writable
35+
surfaces).
7136
- **A time-machine** — audit timeline, field-level drift, full-text search, point-in-time restore.
7237
- **Bulk & lifecycle** — backup/export, gated import/restore, bulk app assignment, CIS/OIB baseline
73-
compare, Conditional Access PowerPoint.
74-
- **Diagnostics** — CMTrace/IME logs, dsregcmd, Event Log, Sysmon, Secure Boot, timeline correlation,
75-
one-click collector. All local, no sign-in.
38+
compare, Conditional Access &rarr; PowerPoint.
39+
- **Diagnostics** — CMTrace/IME logs, dsregcmd, Event Log, Sysmon, Secure Boot, timeline
40+
correlation, one-click collector. All local, no sign-in.
7641
- **Platform layer** — GitOps plan/apply, a blast-radius simulator, a queryable tenant digital twin,
77-
continuous posture scoring, multi-tenant fleet, a policy-pack/playbook ecosystem, and Maester
78-
(CIS/SCuBA/EIDSCA) checks.
42+
continuous posture scoring, multi-tenant fleet, and Maester (CIS/SCuBA/EIDSCA) checks.
7943
- **Human-gated automation** — proposals land in an approval inbox with the diff + blast-radius;
80-
nothing auto-applies. (Cross-MDM is an experimental spike.)
44+
nothing auto-applies.
8145

82-
## Build & run
46+
> ⚠️ **Writes hit your live tenant — there is no sandbox.** A diff-preview &rarr; confirm gate
47+
> protects every change, but a confirmed change is real. Start on low-risk surfaces (Scope Tags,
48+
> Device Categories). Conditional Access is read-only by design.
8349
84-
Prereqs (see [`docs/RUNBOOK.md`](./docs/RUNBOOK.md)): **Windows 11 on ARM64** (primary), the **.NET 10
85-
SDK**, **Rust stable**, the **Windows App SDK runtime**, and the two sibling checkouts the client's
86-
path-deps need — `../windows-rs` (Windows Reactor fork) and `../cmtraceopen` (parser).
87-
88-
```powershell
89-
cargo build --workspace
90-
dotnet build service/CmProjectX.slnx --configuration Release
91-
cargo run -p app # client spawns the sidecar
92-
```
50+
## Architecture
9351

94-
## Releasing
52+
A two-process desktop app: a thin **Rust / WinUI 3** client talks to a local **.NET 10 sidecar** over
53+
loopback. All Graph/Intune coverage lives in the sidecar; the client is data-driven. A single
54+
`contract/openapi.yaml` is the source of truth for the DTOs both sides share, and two storage layers
55+
back it — an append-only audit/drift time-machine (SQLite + Lucene) and a read-through blob cache.
9556

96-
Push a `v<semver>` tag → the **[signed-release workflow](./.github/workflows/cmprojectx-codesign.yml)**
97-
builds the client + self-contained sidecar (+ bundled Maester), packages a **signed MSI + MSIX** per
98-
arch with mpdev (Azure Trusted Signing), and publishes a draft release here:
57+
Full architecture, build, and release detail lives in the
58+
[**`v1` branch README**](https://github.com/adamgell/IntuneCommander/tree/v1#architecture).
9959

100-
```powershell
101-
git tag v1.0.0-beta.1 && git push origin v1.0.0-beta.1
102-
```
60+
## Install
10361

104-
Signing config lives in the `codesigning` environment secrets. Packaging is defined by
105-
[`packaging/installer.mpdev.json`](./packaging/installer.mpdev.json) (see
106-
[`packaging/README.md`](./packaging/README.md)). `scripts/release.ps1` is a local unsigned dev build.
62+
Signed installers for **Windows 11** (**ARM64** primary + **x64**) — MSI + MSIX, code-signed with
63+
Azure Trusted Signing — are on the **[Releases](https://github.com/adamgell/IntuneCommander/releases)**
64+
page. Requires the
65+
[Windows App SDK runtime](https://learn.microsoft.com/windows/apps/windows-app-sdk/downloads); the
66+
.NET runtime is bundled.
10767

10868
## License
10969

110-
**MIT** — see [`LICENSE`](./LICENSE). Bundled third-party components are listed in
111-
[`THIRD-PARTY-NOTICES.md`](./THIRD-PARTY-NOTICES.md). The forked `service/Core/` derives from the
112-
MIT-licensed original IntuneCommander.
70+
**MIT** — see [`LICENSE`](./LICENSE). The forked Graph engine derives from the MIT-licensed
71+
[IntuneManagement](https://github.com/Micke-K/IntuneManagement) by Micke-K.

0 commit comments

Comments
 (0)