DevPulse support
Get connected,
then keep working.
Setup steps, the permissions DevPulse needs, and what to check when something looks wrong.
Requirements
- An Apple Silicon Mac running macOS 27 or later for the macOS app. The iPhone and iPad apps require iOS 27 or iPadOS 27. The unfolded iPhone Duo layout has been verified in the iOS 27.1 simulator for Work Items browsing and item details with PAT sign-in.
- An Azure DevOps Services organization. Azure DevOps Server is not supported.
- Internet access, and permission to view the project you select.
Connect an organization
DevPulse supports two ways of authenticating. The personal access token route needs no setup on Microsoft's side, so it is the fastest way to try the app.
With a personal access token
- Open Settings > Connection.
- Choose Personal access token, enter your organization name and the token, then Save.
- DevPulse checks access and lists your projects. Select the project to work in.
The token needs these scopes:
| Scope | Needed for |
|---|---|
| Build (Read) | Pipeline folders, definitions, runs and stage logs |
| Project and Team (Read) | Listing projects, teams and boards |
| Work Items (Read) | Browsing work items and boards |
| Work Items (Read & Write) | Saving edits, attachments and relationships. Only needed for editing. |
Do not grant write access just to monitor pipelines. A read-only connection stays useful, and DevPulse never upgrades a credential on its own.
With Microsoft Entra ID
Entra sign-in needs an application registration, which is a one-time setup for whoever distributes the app. Register a Mobile and desktop applications platform with the redirect URI msauth.dev.psychicgiggle.PipelineMonitor://auth, and add the delegated Azure DevOps permissions vso.profile, vso.build and vso.work. Add vso.work_write only if you want editing.
There is no client secret and no confidential client. DevPulse cannot discover an existing app registration, and it never reads browser cookies or reuses the Azure DevOps web client's session.
Reading a run
- Pick a pipeline in the sidebar, then a run in Recent Runs. The execution graph appears in the inspector.
- Stage order follows the compiled YAML of that exact run, so parallel branches are placed the way they executed. If the definition cannot be read, the graph falls back to timeline order and says so.
- Only stages that have a log expose Open Logs. Log windows are independent, so you can keep one open while you look at something else.
- Logs load in chunks of 500 lines. Load More Lines continues from the current offset, and Check for New Lines reads from where you left off.
- Auto Refresh checks every 30 seconds while the window is active and pauses in the background.
Work items
- In Work Items, choose a team, then a board or All Work Items.
- Filters for people, types and states run on the server. Clear Filters restores the selected scope.
- Search matches part of a title, or an exact ID written as
12345or#12345. - Editing is always explicit. Save checks the baseline revision first, so a conflict is reported before anything is overwritten.
- Board counts describe what has been loaded, not the whole board. Use the paging controls, including Load Terminal Items, to read further.
Widgets
Right-click a pipeline and choose Show in Desktop Widget for the single-pipeline status widget, or right-click an entry in Recent Runs and choose Add Run to Large Widget to track up to six exact executions.
Add the widget through the desktop's Edit Widgets menu. The app refreshes selected runs while it is running, including with every window closed. WidgetKit decides when the desktop actually redraws, so the refresh interval is not a guarantee of a visible change. The cached age is shown on the widget, and a widget reading stale data is marked Cached.
iCloud settings
Selected preferences, scoped pins, Work Items defaults, and your organization and project choice can synchronize through your Apple Account. Credentials, MSAL tokens, widget data, window state, loaded results and editor drafts stay on the device.
Synchronization depends on your Apple Account and Apple's service availability. Saving locally does not confirm that another device has received the change, and there is no guaranteed delivery interval. Failures are reported in Settings > Connection > iCloud Settings, where Retry Local Changes sends them explicitly.
Common problems
Authentication failed
Check the organization name, the token expiry and the scopes. Never send a token to a support request.
Permission denied
Ask your organization's administrator to confirm project and area access. Refreshing does not change permissions, and DevPulse cannot grant them.
The widget shows old data
Keep DevPulse running, confirm the connection, and use Refresh Runs in the widget settings. The widget displays the age of its cache, and the operating system decides when to redraw it.
A save was rejected
Your draft is kept. Reload the work item explicitly, then reapply the change and save again. Azure DevOps rules and field permissions remain authoritative.
The board looks incomplete
Loaded counts and notices on the board describe the current read. Use the paging controls to extend it. Treat loaded counts as a snapshot, never as the complete server result.
Report a problem
Use the GitHub issue form for bugs, feature requests and support questions. A GitHub account is required, and issues are public.
Include the app version, your macOS, iOS or iPadOS version, what you did, and what happened instead. A small example with non-sensitive data helps. Never include a personal access token, an access token, an authorization header, private task logs, or unredacted organization data.
For a security concern, use GitHub's private vulnerability reporting for this repository instead of a public issue.