├── .devcontainer
├── Dockerfile
└── devcontainer.json
├── .github
└── workflows
│ └── vitepress-deploy.yml
├── .gitignore
├── .unotes
└── unotes_meta.json
├── .vitepress
├── config.mts
├── images
│ ├── 2020-12-07-15-46-18.png
│ ├── 2020-12-07-15-47-07.png
│ ├── 2020-12-07-15-47-18.png
│ ├── 2020-12-07-15-47-33.png
│ ├── 2020-12-07-15-47-40.png
│ ├── 2020-12-07-15-47-49.png
│ ├── 2020-12-07-15-47-52.png
│ ├── 2020-12-07-15-48-05.png
│ ├── 2020-12-07-15-48-10.png
│ ├── 2020-12-07-15-48-22.png
│ ├── 2020-12-07-15-48-26.png
│ ├── 2020-12-07-15-48-31.png
│ ├── 2020-12-07-15-48-35.png
│ ├── 2020-12-07-15-48-38.png
│ ├── 2021-02-23-05-49-03.png
│ ├── 2021-02-23-06-14-05.png
│ ├── 2021-02-23-06-18-23.png
│ ├── 2021-02-23-06-34-22.png
│ ├── 2021-02-23-06-44-25.png
│ ├── 2021-02-23-06-45-47.png
│ ├── 2021-02-23-06-51-47.png
│ ├── 2021-02-23-07-14-24.png
│ ├── 2021-02-23-07-20-20.png
│ ├── 2021-02-23-07-22-31.png
│ ├── 2021-02-23-07-24-17.png
│ ├── 2021-02-23-07-28-08.png
│ ├── 2021-02-23-08-05-57.png
│ ├── 2021-02-23-08-06-49.png
│ ├── 2021-02-23-08-08-16.png
│ ├── 2021-02-23-08-08-39.png
│ ├── 2021-02-23-08-13-18.png
│ ├── 2021-02-23-08-22-00.png
│ ├── 2021-02-23-08-46-09.png
│ ├── 2021-02-23-08-47-36.png
│ ├── 2021-02-23-09-15-27.png
│ ├── 2021-02-23-09-18-04.png
│ ├── 2021-02-23-09-44-51.png
│ ├── 2021-02-23-09-46-59.png
│ ├── 2021-02-24-05-54-53.png
│ ├── 2021-02-24-05-55-20.png
│ ├── 2021-03-01-08-25-24.png
│ ├── 2021-03-01-08-35-49.png
│ ├── 2021-03-01-08-42-41.png
│ ├── 2021-03-01-08-44-19.png
│ ├── 2021-03-01-08-51-38.png
│ ├── 2021-03-01-14-17-29.png
│ ├── 2021-03-15-08-26-56.png
│ ├── 2021-03-15-08-27-10.png
│ ├── 2021-03-15-08-27-20.png
│ ├── 2021-03-15-08-27-29.png
│ ├── 2021-03-15-08-29-07.png
│ ├── 2021-03-15-08-29-35.png
│ ├── 2021-03-15-08-29-41.png
│ ├── 2021-03-15-08-29-52.png
│ ├── 2021-03-15-08-29-57.png
│ ├── 2021-03-15-08-30-04.png
│ ├── 2021-03-15-08-30-29.png
│ ├── 2021-03-15-08-37-29.png
│ ├── 2021-03-15-08-37-36.png
│ ├── 2021-03-15-08-37-50.png
│ ├── 2021-03-15-08-47-28.png
│ ├── 2021-03-23-14-26-14.png
│ ├── 2021-03-23-14-28-30.png
│ ├── 2021-03-23-14-30-41.png
│ ├── 2021-03-23-14-32-00.png
│ ├── 2021-03-23-14-43-35.png
│ ├── 2021-03-23-14-44-05.png
│ ├── 2021-03-23-15-05-59.png
│ ├── 2021-03-23-15-14-46.png
│ ├── 2021-03-23-15-16-29.png
│ ├── 2021-03-23-15-17-04.png
│ ├── 2021-03-23-15-17-43.png
│ ├── 2021-03-23-15-18-39.png
│ ├── 2021-03-23-15-19-31.png
│ ├── 2021-03-23-16-14-24.png
│ ├── 2021-03-23-16-17-28.png
│ ├── 2021-03-23-16-18-19.png
│ ├── 2021-03-23-16-19-01.png
│ ├── 2021-03-23-16-30-41.png
│ ├── 2021-03-23-18-35-28.png
│ ├── 2021-03-23-18-35-49.png
│ ├── 2021-03-23-18-39-00.png
│ ├── 2021-03-23-18-57-19.png
│ ├── 2021-03-23-18-59-10.png
│ ├── 2021-03-23-18-59-44.png
│ ├── 2021-03-23-19-00-04.png
│ ├── 2021-03-23-19-01-36.png
│ ├── 2021-03-23-19-03-33.png
│ ├── 2021-03-23-19-06-55.png
│ ├── 2021-03-23-19-08-30.png
│ ├── 2021-03-23-19-12-34.png
│ ├── 2021-03-23-19-13-56.png
│ ├── 2021-03-23-19-17-38.png
│ ├── 2021-03-23-19-21-03.png
│ ├── 2021-03-23-19-24-06.png
│ ├── 2021-03-24-11-18-30.png
│ ├── 2021-08-16-13-19-15.png
│ ├── 2021-08-16-13-20-45.png
│ ├── 2021-08-16-13-23-26.png
│ ├── 2022-01-26-00-09-33.png
│ ├── 2022-01-26-00-11-38.png
│ ├── 2022-02-23_15-00-31.png
│ ├── 2022-12-12_10-42-55.png
│ ├── 2022-12-12_11-26-00.png
│ ├── 2022-12-12_11-41-18.png
│ ├── 2022-12-12_11-44-58.png
│ ├── 2022-12-12_12-10-21.png
│ ├── LoginImg1.png
│ ├── LoginImg2.png
│ ├── LoginImg3.png
│ ├── LoginImg6-1024x100.png
│ ├── LoginImg7.png
│ ├── Loginimg4.png
│ ├── connectsecuredocs
│ │ ├── ApiUser_Step01.png
│ │ ├── ApiUser_Step02.png
│ │ ├── ApiUser_Step03.png
│ │ ├── Integration_Step01.png
│ │ ├── Integration_Step02.png
│ │ ├── PodURL_Step01.png
│ │ └── PodURL_Step02.png
│ ├── image-1.png
│ ├── manage-sc.png
│ └── ncentraldocs
│ │ ├── add_automation_policy_1.png
│ │ ├── add_automation_policy_2.png
│ │ ├── add_automation_policy_3.png
│ │ ├── add_integration_guide_1.png
│ │ ├── add_integration_guide_2.png
│ │ ├── add_integration_guide_new_1.png
│ │ ├── add_user_guide_1.png
│ │ ├── add_userrole_guide_1.png
│ │ ├── add_userrole_guide_2.png
│ │ ├── login_mfa_guide_1.png
│ │ └── new_add_user_guide_1.png
└── theme
│ ├── immy.css
│ ├── index.ts
│ └── style.css
├── .vscode
├── extensions.json
├── launch.json
├── settings.json
└── tasks.json
├── FAQ.md
├── README.md
├── add-users.md
├── azure-graph-permissions-setup.md
├── build-your-own-integration.md
├── connectsecure-integration-setup.md
├── connectwise-automate-integration-setup.md
├── connectwise-control-integration-setup.md
├── connectwise-manage-integration-setup.md
├── getting-started.md
├── halo-integration-setup.md
├── image-1.png
├── image-10.png
├── image-2.png
├── image-3.png
├── image-4.png
├── image-5.png
├── image-6.png
├── image-7.png
├── image.png
├── immy-commands.md
├── index.md
├── markdown-examples.md
├── ncentral-integration-setup.md
├── ninjarmm-integration-setup.md
├── old-ncentral-integration-setup.md
├── onboarding.md
├── package.json
├── public
├── ImmyBotRunScriptV2.amp
├── favicon.ico
├── immybot-glasses.png
└── logo-256x256.png
├── recommended-deployments.md
├── releases-2020.md
├── releases-2021.md
├── releases-2022.md
├── releases.md
├── scripts.md
├── terminology.md
├── troubleshooting.md
├── user-roles.md
├── windows-sandbox.md
└── yarn.lock
/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | # See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.158.0/containers/alpine/.devcontainer/base.Dockerfile
2 |
3 | # [Choice] Alpine version: 3.12, 3.11, 3.10
4 | ARG VARIANT="3.12"
5 | FROM mcr.microsoft.com/vscode/devcontainers/base:0-alpine-${VARIANT}
6 |
7 | # ** [Optional] Uncomment this section to install additional packages. **
8 | RUN apk update \
9 | && apk add --no-cache nodejs yarn
--------------------------------------------------------------------------------
/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2 | // https://github.com/microsoft/vscode-dev-containers/tree/v0.158.0/containers/alpine
3 | {
4 | "name": "Alpine",
5 | "build": {
6 | "dockerfile": "Dockerfile",
7 | // Update 'VARIANT' to pick an Alpine version: 3.10, 3.11, 3.12
8 | "args": { "VARIANT": "3.12" }
9 | },
10 |
11 | // Set *default* container specific settings.json values on container create.
12 |
13 | "customizations": {
14 | "vscode": {
15 | "extensions": ["telesoho.vscode-markdown-paste-image", "docsmsft.docs-markdown", "vue.volar"],
16 | "settings": {
17 | "terminal.integrated.shell.linux": "/bin/ash"
18 | }
19 | }
20 | },
21 |
22 | // Add the IDs of extensions you want installed when the container is created.
23 | // Note that some extensions may not work in Alpine Linux. See https://aka.ms/vscode-remote/linux.
24 |
25 | // Use 'forwardPorts' to make a list of ports inside the container available locally.
26 | "forwardPorts": [8080, 8081],
27 |
28 | // Use 'postCreateCommand' to run commands after the container is created.
29 | // "postCreateCommand": "uname -a",
30 |
31 | // Uncomment when using a ptrace-based debugger like C++, Go, and Rust
32 | // "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],
33 |
34 | // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
35 | "remoteUser": "vscode"
36 | }
--------------------------------------------------------------------------------
/.github/workflows/vitepress-deploy.yml:
--------------------------------------------------------------------------------
1 | name: Build and Deploy
2 | on:
3 | push:
4 | branches:
5 | - main
6 | permissions:
7 | contents: write
8 | jobs:
9 | build-and-deploy:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout 🛎️
13 | uses: actions/checkout@v3 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
14 | - name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
15 | run: |
16 | yarn install
17 | yarn docs:build
18 | env:
19 | NODE_OPTIONS: "--openssl-legacy-provider"
20 | - name: Deploy 🚀
21 | uses: JamesIves/github-pages-deploy-action@v4
22 | with:
23 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
24 | BRANCH: gh-pages # The branch the action should deploy to.
25 | FOLDER: .vitepress/dist # The folder the action should deploy.
26 | CLEAN: true # Automatically remove deleted files from the deploy branch
27 |
28 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | pids
2 | logs
3 | node_modules
4 | npm-debug.log
5 | coverage/
6 | run
7 | dist
8 | .DS_Store
9 | .nyc_output
10 | .basement
11 | config.local.js
12 | basement_dist
13 | .vs/
14 | .vitepress/cache
15 | .vitepress/dist
--------------------------------------------------------------------------------
/.unotes/unotes_meta.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "",
3 | "isOrdered": true,
4 | "folders": {
5 | "src": {
6 | "name": "src",
7 | "isOrdered": true,
8 | "folders": {
9 | "guide": {
10 | "name": "guide",
11 | "isOrdered": true,
12 | "folders": {},
13 | "files": {
14 | "connectwise-control-integration-setup": 0,
15 | "connectwise-automate-integration-setup": 1,
16 | "connectwise-manage-integration-setup": 2,
17 | "csp-preconsent-instructions": 3,
18 | "immy-commands": 4,
19 | "introduction": 5,
20 | "releases": 6,
21 | "scripts": 7
22 | }
23 | }
24 | },
25 | "files": {
26 | "index": 0
27 | }
28 | }
29 | },
30 | "files": {
31 | "README": 0
32 | }
33 | }
--------------------------------------------------------------------------------
/.vitepress/config.mts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitepress';
2 | import { withMermaid } from "vitepress-plugin-mermaid";
3 |
4 | // https://vitepress.dev/reference/site-config
5 | export default withMermaid({
6 | title: "immy.bot",
7 | head: [
8 | ['link', { rel: 'icon', href: '/favicon.ico' }],
9 | [
10 | 'script',
11 | {},
12 | `(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
13 | new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
14 | j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
15 | 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
16 | })(window,document,'script','dataLayer','GTM-PF34XF88');`
17 | ]
18 | ],
19 | description: "A documentation suite for all things ImmyBot",
20 | sitemap: {
21 | hostname: 'https://docs.immy.bot'
22 | },
23 | themeConfig: {
24 | logo: '/immybot-glasses.png',
25 | // https://vitepress.dev/reference/default-theme-config
26 | sidebar: [
27 | {
28 | text: 'Introduction',
29 | collapsed: false,
30 | items: [
31 | { text: 'Getting Started', link: '/getting-started' },
32 | { text: 'What\'s New', link: '/releases' },
33 | { text: 'Add Users', link: './add-users' },
34 | { text: 'Onboarding', link: './onboarding' },
35 | { text: 'Recommended Deployments', link: './recommended-deployments' },
36 | { text: 'Terminology', link: './terminology' },
37 | { text: 'Troubleshooting', link: './troubleshooting' },
38 | { text: 'User Roles', link: './user-roles' },
39 | { text: 'Windows Sandbox', link: './windows-sandbox' },
40 | ],
41 | },
42 | {
43 | text: 'Integrations',
44 | collapsed: false,
45 | items: [
46 | { text: 'Build Your Own', link: '/build-your-own-integration' },
47 | { text: 'ConnectSecure', link: '/connectsecure-integration-setup' },
48 | { text: 'ConnectWise Automate', link: '/connectwise-automate-integration-setup' },
49 | { text: 'ConnectWise Control', link: '/connectwise-control-integration-setup' },
50 | { text: 'ConnectWise Manage', link: '/connectwise-manage-integration-setup' },
51 | { text: 'N-Central', link: '/ncentral-integration-setup' },
52 | { text: 'NinjaRMM', link: '/ninjarmm-integration-setup' },
53 | { text: 'HaloPSA', link: '/halo-integration-setup' },
54 | { text: 'Azure', link: '/azure-graph-permissions-setup' },
55 | ],
56 | },
57 | {
58 | text: 'Advanced',
59 | collapsed: false,
60 | items: [
61 | { text: 'Scripting Guide', link: '/scripts' },
62 | { text: 'Metascripts / Cloud Scripts', link: '/immy-commands' },
63 | ],
64 | },
65 | { text: 'Frequently Asked Questions', link: '/FAQ' },
66 | ],
67 |
68 | socialLinks: [
69 | { icon: 'github', link: 'https://github.com/immense/immybot-documentation' }
70 | ],
71 | search: {
72 | provider: 'algolia',
73 | options: {
74 | apiKey: "e84eee7e1fa61571b3814adfcb2a70f2",
75 | indexName: "immy",
76 | appId: 'SU6GB55GXI',
77 | }
78 | }
79 | },
80 | ignoreDeadLinks: true
81 | });
82 |
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-46-18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-46-18.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-47-07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-47-07.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-47-18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-47-18.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-47-33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-47-33.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-47-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-47-40.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-47-49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-47-49.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-47-52.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-47-52.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-48-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-48-05.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-48-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-48-10.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-48-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-48-22.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-48-26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-48-26.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-48-31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-48-31.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-48-35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-48-35.png
--------------------------------------------------------------------------------
/.vitepress/images/2020-12-07-15-48-38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2020-12-07-15-48-38.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-05-49-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-05-49-03.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-06-14-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-06-14-05.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-06-18-23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-06-18-23.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-06-34-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-06-34-22.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-06-44-25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-06-44-25.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-06-45-47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-06-45-47.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-06-51-47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-06-51-47.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-07-14-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-07-14-24.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-07-20-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-07-20-20.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-07-22-31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-07-22-31.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-07-24-17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-07-24-17.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-07-28-08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-07-28-08.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-08-05-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-08-05-57.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-08-06-49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-08-06-49.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-08-08-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-08-08-16.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-08-08-39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-08-08-39.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-08-13-18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-08-13-18.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-08-22-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-08-22-00.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-08-46-09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-08-46-09.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-08-47-36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-08-47-36.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-09-15-27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-09-15-27.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-09-18-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-09-18-04.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-09-44-51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-09-44-51.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-23-09-46-59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-23-09-46-59.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-24-05-54-53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-24-05-54-53.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-02-24-05-55-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-02-24-05-55-20.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-01-08-25-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-01-08-25-24.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-01-08-35-49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-01-08-35-49.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-01-08-42-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-01-08-42-41.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-01-08-44-19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-01-08-44-19.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-01-08-51-38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-01-08-51-38.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-01-14-17-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-01-14-17-29.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-26-56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-26-56.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-27-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-27-10.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-27-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-27-20.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-27-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-27-29.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-29-07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-29-07.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-29-35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-29-35.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-29-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-29-41.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-29-52.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-29-52.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-29-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-29-57.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-30-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-30-04.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-30-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-30-29.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-37-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-37-29.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-37-36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-37-36.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-37-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-37-50.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-15-08-47-28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-15-08-47-28.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-14-26-14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-14-26-14.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-14-28-30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-14-28-30.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-14-30-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-14-30-41.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-14-32-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-14-32-00.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-14-43-35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-14-43-35.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-14-44-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-14-44-05.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-15-05-59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-15-05-59.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-15-14-46.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-15-14-46.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-15-16-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-15-16-29.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-15-17-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-15-17-04.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-15-17-43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-15-17-43.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-15-18-39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-15-18-39.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-15-19-31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-15-19-31.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-16-14-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-16-14-24.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-16-17-28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-16-17-28.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-16-18-19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-16-18-19.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-16-19-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-16-19-01.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-16-30-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-16-30-41.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-18-35-28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-18-35-28.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-18-35-49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-18-35-49.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-18-39-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-18-39-00.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-18-57-19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-18-57-19.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-18-59-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-18-59-10.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-18-59-44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-18-59-44.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-00-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-00-04.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-01-36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-01-36.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-03-33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-03-33.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-06-55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-06-55.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-08-30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-08-30.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-12-34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-12-34.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-13-56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-13-56.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-17-38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-17-38.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-21-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-21-03.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-23-19-24-06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-23-19-24-06.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-03-24-11-18-30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-03-24-11-18-30.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-08-16-13-19-15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-08-16-13-19-15.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-08-16-13-20-45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-08-16-13-20-45.png
--------------------------------------------------------------------------------
/.vitepress/images/2021-08-16-13-23-26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2021-08-16-13-23-26.png
--------------------------------------------------------------------------------
/.vitepress/images/2022-01-26-00-09-33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2022-01-26-00-09-33.png
--------------------------------------------------------------------------------
/.vitepress/images/2022-01-26-00-11-38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2022-01-26-00-11-38.png
--------------------------------------------------------------------------------
/.vitepress/images/2022-02-23_15-00-31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2022-02-23_15-00-31.png
--------------------------------------------------------------------------------
/.vitepress/images/2022-12-12_10-42-55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2022-12-12_10-42-55.png
--------------------------------------------------------------------------------
/.vitepress/images/2022-12-12_11-26-00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2022-12-12_11-26-00.png
--------------------------------------------------------------------------------
/.vitepress/images/2022-12-12_11-41-18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2022-12-12_11-41-18.png
--------------------------------------------------------------------------------
/.vitepress/images/2022-12-12_11-44-58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2022-12-12_11-44-58.png
--------------------------------------------------------------------------------
/.vitepress/images/2022-12-12_12-10-21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/2022-12-12_12-10-21.png
--------------------------------------------------------------------------------
/.vitepress/images/LoginImg1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/LoginImg1.png
--------------------------------------------------------------------------------
/.vitepress/images/LoginImg2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/LoginImg2.png
--------------------------------------------------------------------------------
/.vitepress/images/LoginImg3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/LoginImg3.png
--------------------------------------------------------------------------------
/.vitepress/images/LoginImg6-1024x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/LoginImg6-1024x100.png
--------------------------------------------------------------------------------
/.vitepress/images/LoginImg7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/LoginImg7.png
--------------------------------------------------------------------------------
/.vitepress/images/Loginimg4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/Loginimg4.png
--------------------------------------------------------------------------------
/.vitepress/images/connectsecuredocs/ApiUser_Step01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/connectsecuredocs/ApiUser_Step01.png
--------------------------------------------------------------------------------
/.vitepress/images/connectsecuredocs/ApiUser_Step02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/connectsecuredocs/ApiUser_Step02.png
--------------------------------------------------------------------------------
/.vitepress/images/connectsecuredocs/ApiUser_Step03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/connectsecuredocs/ApiUser_Step03.png
--------------------------------------------------------------------------------
/.vitepress/images/connectsecuredocs/Integration_Step01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/connectsecuredocs/Integration_Step01.png
--------------------------------------------------------------------------------
/.vitepress/images/connectsecuredocs/Integration_Step02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/connectsecuredocs/Integration_Step02.png
--------------------------------------------------------------------------------
/.vitepress/images/connectsecuredocs/PodURL_Step01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/connectsecuredocs/PodURL_Step01.png
--------------------------------------------------------------------------------
/.vitepress/images/connectsecuredocs/PodURL_Step02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/connectsecuredocs/PodURL_Step02.png
--------------------------------------------------------------------------------
/.vitepress/images/image-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/image-1.png
--------------------------------------------------------------------------------
/.vitepress/images/manage-sc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/manage-sc.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_automation_policy_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_automation_policy_1.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_automation_policy_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_automation_policy_2.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_automation_policy_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_automation_policy_3.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_integration_guide_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_integration_guide_1.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_integration_guide_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_integration_guide_2.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_integration_guide_new_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_integration_guide_new_1.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_user_guide_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_user_guide_1.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_userrole_guide_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_userrole_guide_1.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/add_userrole_guide_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/add_userrole_guide_2.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/login_mfa_guide_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/login_mfa_guide_1.png
--------------------------------------------------------------------------------
/.vitepress/images/ncentraldocs/new_add_user_guide_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/images/ncentraldocs/new_add_user_guide_1.png
--------------------------------------------------------------------------------
/.vitepress/theme/immy.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/.vitepress/theme/immy.css
--------------------------------------------------------------------------------
/.vitepress/theme/index.ts:
--------------------------------------------------------------------------------
1 | // https://vitepress.dev/guide/custom-theme
2 | import { h } from 'vue';
3 | import Theme from 'vitepress/theme';
4 | import './style.css';
5 | import './immy.css';
6 |
7 | export default {
8 | extends: Theme,
9 | Layout: () => {
10 | return h(Theme.Layout, null, {
11 | // https://vitepress.dev/guide/extending-default-theme#layout-slots
12 | });
13 | },
14 | enhanceApp({ app, router, siteData }) {
15 | // ...
16 | }
17 | };
18 |
--------------------------------------------------------------------------------
/.vitepress/theme/style.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Customize default theme styling by overriding CSS variables:
3 | * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
4 | */
5 |
6 | /**
7 | * Colors
8 | *
9 | * Each colors have exact same color scale system with 3 levels of solid
10 | * colors with different brightness, and 1 soft color.
11 | *
12 | * - `XXX-1`: The most solid color used mainly for colored text. It must
13 | * satisfy the contrast ratio against when used on top of `XXX-soft`.
14 | *
15 | * - `XXX-2`: The color used mainly for hover state of the button.
16 | *
17 | * - `XXX-3`: The color for solid background, such as bg color of the button.
18 | * It must satisfy the contrast ratio with pure white (#ffffff) text on
19 | * top of it.
20 | *
21 | * - `XXX-soft`: The color used for subtle background such as custom container
22 | * or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
23 | * on top of it.
24 | *
25 | * The soft color must be semi transparent alpha channel. This is crucial
26 | * because it allows adding multiple "soft" colors on top of each other
27 | * to create a accent, such as when having inline code block inside
28 | * custom containers.
29 | *
30 | * - `default`: The color used purely for subtle indication without any
31 | * special meanings attched to it such as bg color for menu hover state.
32 | *
33 | * - `brand`: Used for primary brand colors, such as link text, button with
34 | * brand theme, etc.
35 | *
36 | * - `tip`: Used to indicate useful information. The default theme uses the
37 | * brand color for this by default.
38 | *
39 | * - `warning`: Used to indicate warning to the users. Used in custom
40 | * container, badges, etc.
41 | *
42 | * - `danger`: Used to show error, or dangerous message to the users. Used
43 | * in custom container, badges, etc.
44 | * -------------------------------------------------------------------------- */
45 |
46 | :root {
47 | --vp-c-default-1: var(--vp-c-gray-1);
48 | --vp-c-default-2: var(--vp-c-gray-2);
49 | --vp-c-default-3: var(--vp-c-gray-3);
50 | --vp-c-default-soft: var(--vp-c-gray-soft);
51 |
52 | --vp-c-brand-1: var(--vp-c-indigo-1);
53 | --vp-c-brand-2: var(--vp-c-indigo-2);
54 | --vp-c-brand-3: var(--vp-c-indigo-3);
55 | --vp-c-brand-soft: var(--vp-c-indigo-soft);
56 |
57 | --vp-c-tip-1: var(--vp-c-brand-1);
58 | --vp-c-tip-2: var(--vp-c-brand-2);
59 | --vp-c-tip-3: var(--vp-c-brand-3);
60 | --vp-c-tip-soft: var(--vp-c-brand-soft);
61 |
62 | --vp-c-warning-1: var(--vp-c-yellow-1);
63 | --vp-c-warning-2: var(--vp-c-yellow-2);
64 | --vp-c-warning-3: var(--vp-c-yellow-3);
65 | --vp-c-warning-soft: var(--vp-c-yellow-soft);
66 |
67 | --vp-c-danger-1: var(--vp-c-red-1);
68 | --vp-c-danger-2: var(--vp-c-red-2);
69 | --vp-c-danger-3: var(--vp-c-red-3);
70 | --vp-c-danger-soft: var(--vp-c-red-soft);
71 |
72 | --vp-home-hero-name-background: var(--vp-c-text-1);
73 | --vp-home-hero-image-background-image: none;
74 |
75 | }
76 |
77 | /**
78 | * Component: Button
79 | * -------------------------------------------------------------------------- */
80 |
81 | :root {
82 | --vp-button-brand-border: transparent;
83 | --vp-button-brand-text: var(--vp-c-white);
84 | --vp-button-brand-bg: var(--vp-c-brand-3);
85 | --vp-button-brand-hover-border: transparent;
86 | --vp-button-brand-hover-text: var(--vp-c-white);
87 | --vp-button-brand-hover-bg: var(--vp-c-brand-2);
88 | --vp-button-brand-active-border: transparent;
89 | --vp-button-brand-active-text: var(--vp-c-white);
90 | --vp-button-brand-active-bg: var(--vp-c-brand-1);
91 | }
92 |
93 | /**
94 | * Component: Home
95 | * -------------------------------------------------------------------------- */
96 |
97 | :root {
98 | --vp-home-hero-name-color: transparent;
99 | --vp-home-hero-name-background: var(--vp-c-text-1);
100 |
101 | --vp-home-hero-image-background-image: none;
102 | --vp-home-hero-image-filter: blur(40px);
103 | }
104 |
105 | @media (min-width: 640px) {
106 | :root {
107 | --vp-home-hero-image-filter: blur(56px);
108 | }
109 | }
110 |
111 | @media (min-width: 960px) {
112 | :root {
113 | --vp-home-hero-image-filter: blur(72px);
114 | }
115 | }
116 |
117 | /**
118 | * Component: Custom Block
119 | * -------------------------------------------------------------------------- */
120 |
121 | :root {
122 | --vp-custom-block-tip-border: transparent;
123 | --vp-custom-block-tip-text: var(--vp-c-text-1);
124 | --vp-custom-block-tip-bg: var(--vp-c-brand-soft);
125 | --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
126 | }
127 |
128 | /**
129 | * Component: Algolia
130 | * -------------------------------------------------------------------------- */
131 |
132 | .DocSearch {
133 | --docsearch-primary-color: var(--vp-c-brand-1) !important;
134 | }
135 |
136 | html.dark {
137 | --vp-home-hero-name-background: var(--vp-c-text-1);
138 | }
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
3 | // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
4 |
5 | // List of extensions which should be recommended for users of this workspace.
6 | "recommendations": [
7 | "telesoho.vscode-markdown-paste-image",
8 | "docsmsft.docs-markdown",
9 | "yzhang.markdown-all-in-one"
10 | ],
11 | // List of extensions recommended by VS Code that should not be recommended for users of this workspace.
12 | "unwantedRecommendations": [
13 |
14 | ]
15 | }
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "Launch Edge against localhost",
9 | "type": "msedge",
10 | "request": "launch",
11 | "url": "http://localhost:5173",
12 | "webRoot": "${workspaceFolder}",
13 | "preLaunchTask": "serve",
14 | },
15 | {
16 | "name": "Dev Docs - Live Server",
17 | "type": "node-terminal",
18 | "request": "launch",
19 | "command": "yarn docs:dev",
20 | "timeout": 3000,
21 | "serverReadyAction": {
22 | "pattern": ".*Local:.*:([0-9]{1,5}).*",
23 | "action": "debugWithEdge",
24 | "uriFormat": "http://localhost:%s",
25 | "webRoot": "${workspaceFolder}",
26 | "killOnServerStop": true
27 | }
28 | }
29 | ]
30 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.eol": "\n",
3 | "files.trimTrailingWhitespace": true,
4 | "editor.rulers": [
5 | 100
6 | ],
7 | "editor.tabSize": 2,
8 | "editor.formatOnPaste": true,
9 | "editor.formatOnSave": true,
10 | "[javascript]": {
11 | "editor.defaultFormatter": "esbenp.prettier-vscode"
12 | },
13 | "javascript.format.insertSpaceAfterConstructor": true,
14 | "javascript.format.enable": false,
15 | "[typescript]": {
16 | "editor.defaultFormatter": "esbenp.prettier-vscode"
17 | },
18 | "[vue]": {
19 | "editor.defaultFormatter": "esbenp.prettier-vscode"
20 | },
21 | "prettier.singleQuote": false,
22 | "prettier.trailingComma": "es5",
23 | "prettier.printWidth": 100,
24 | "javascript.format.semicolons": "insert",
25 | "typescript.format.semicolons": "insert",
26 | "[json]": {
27 | "editor.defaultFormatter": "vscode.json-language-features"
28 | },
29 | "editor.codeActionsOnSave": {
30 | "source.fixAll": "explicit"
31 | },
32 | "findUnusedExports.detectCircularImports": true,
33 | "typescript.tsdk": "node_modules/typescript/lib",
34 | "MarkdownPaste.path": "../.vitepress/images"
35 | }
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "label": "serve",
6 | "type": "npm",
7 | "script": "docs:dev",
8 | "isBackground": true,
9 | "problemMatcher": [
10 | "$vite",
11 | "$vite-eslint-visualstudio",
12 | "$vite-esbuild",
13 | {
14 | "owner": "typescript",
15 | "source": "Typescript",
16 | "fileLocation": "absolute",
17 | "applyTo": "allDocuments",
18 | "background": {
19 | "activeOnStart": true,
20 | "beginsPattern": "vite",
21 | "endsPattern": "Local"
22 | },
23 | "pattern": [
24 | {
25 | "regexp": "(ERROR|WARNING)\\(TypeScript\\) (.*)",
26 | "severity": 1,
27 | "message": 2
28 | },
29 | {
30 | "regexp": "^ FILE (.*):(\\d*):(\\d*)$",
31 | "file": 1,
32 | "line": 2,
33 | "column": 3
34 | }
35 | ]
36 | }
37 | ]
38 | }
39 | ]
40 | }
--------------------------------------------------------------------------------
/FAQ.md:
--------------------------------------------------------------------------------
1 | ::: warning *ImmyBot's EV code-signing certificate is changing on Feb. 11th, 2025*
2 | Please see the [FAQ section for more details](https://docs.immy.bot/FAQ.html#what-should-i-do-about-immybot-s-upcoming-code-signing-certificate-change) on updating security exclusions.
3 | :::
4 |
5 | ::: danger *ImmyBot no longer supports Windows 7, Server 2008 (or Server 2012 w/o [ESUs](https://learn.microsoft.com/en-us/windows-server/get-started/extended-security-updates-overview)) machines.*
6 | Please see the [FAQ section for more details](https://docs.immy.bot/FAQ.html#what-windows-versions-does-immyagent-support)
7 | :::
8 | # Frequently Asked Questions
9 |
10 | ## What is the difference between the Starter and Standard plan?
11 |
12 | Both plans allow you to import all of your existing agents into ImmyBot if you use one of our support integrations.
13 |
14 | Both plans allow installing and updating of the ImmyBot agent on all of your existing computers.
15 |
16 | Both plans allow running maintenance on all of your computers given that the computer was imported into ImmyBot in the last 7 days.
17 |
18 | ### Starter
19 |
20 | Starter does not charge maintenance per computer since it does not support ongoing maintenance for your computers.
21 |
22 | Once a computer has been in ImmyBot for at least 7 days, maintenance can no longer be executed against it. This includes all onboarding, full maintenance, and adhoc sessions. If you need to manage ongoing maintenance against a computer older than 7 days, then you will need to upgrade to Standard.
23 |
24 | ### Standard
25 |
26 | Standard charges per maintained computer since it supports ongoing maintenance.
27 |
28 | #### What is a maintained computer?
29 |
30 | Since we allow you to import all of your agents into ImmyBot, we don't simply charge per agent.
31 |
32 | Instead, we only consider computers that have received ongoing maintenance.
33 |
34 | A computer has received ongoing maintenance if an onboarding, full maintenance, or adhoc session has been run against it after the computer has been in ImmyBot for over 7 days.
35 |
36 | #### Maintenance per computer
37 |
38 | When maintenance is performed against a computer older than 7 days, ImmyBot will check the following:
39 |
40 | 1) Is this computer already counted towards your maintained count?
41 |
42 | - If it is, then maintenance can be performed on this computer.
43 |
44 | 2) Are we at the maximum number of maintained computers for this subscription?
45 |
46 | - If it is not, then this computer will be added to your active maintained computer count, and maintenance can be performed on this computer.
47 |
48 | When a subscription is at the maximum maintained count, only maintenance for computers considered in the count will be allowed. In order to run maintenance on other computers, you can purchase more computer licenses for your subscription.
49 |
50 | ## Do I need a separate USB/Installer per tenant?
51 | No. Create a USB pointing to your own tenant (or create an “Onboarding” tenant) and don’t select the Auto-Onboard option.
52 |
53 | You will change the tenant of the computer on the Onboarding area of the computer after it comes into New Computers
54 |
55 | ## Will ImmyBot start doing anything without my consent? Like when I save a deployment, will it automatically deploy?
56 |
57 | ImmyBot does not deploy anything automatically. You can feel safe saving your Deployments. Think of them like documenting how things SHOULD be. If you want Immy to automatically enforce deployments, you would need the ImmyBot Standard plan which allows you to create schedules.
58 |
59 | Think of it like if Group Policy only updated if you manually ran gpupdate /force or otherwise specified a schedule for the gpupdates to happen. We understand that updating and installing software on existing computers can be intrusive to the user which is why we schedule these actions out and give the user the ability to postpone via interactive emails.
60 |
61 | IMPORTANT: If you setup integration with your RMM, when you map an RMM client to an ImmyBot tenant, ImmyBot will begin running inventory scripts on those machines every 24 hours. These scripts are read-only, but if you have aggressive monitoring software it may cause false alarms.
62 |
63 | ## What if I don’t know which user will be using the computer?
64 |
65 | Do your best to find out, or assign machines to specific users ahead of time. Without this, user level customizations are impossible. However, you may find yourself in a shared-computer scenario where every computer gets the same 365 applications. Simply create a deployment for those 365 applications for all computers under that tenant.
66 |
67 | ## Can Immy join AzureAD?
68 |
69 | Yes. Create a deployment for the Join AzureAD task. We use the bulk enrollment technique and generate a provisioning package to join the machine to AzureAD. At the time of writing, this requires you to create a user in each customer’s tenant. We plan to remove this requirement in the future.
70 |
71 | ## My AzureAD Join action is failing, what are some common fixes?
72 |
73 | Check if MFA Requirement for Joining is enabled via [Conditional Access](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/ConditionalAccessBlade/~/Policies) or [Azure Device Settings](https://portal.azure.com/#view/Microsoft_AAD_Devices/DevicesMenuBlade/~/DeviceSettings/menuId~/null).
74 | MFA requirement for all users in [Conditional Access](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/ConditionalAccessBlade/~/Policies) will also block the execution, as the package_XXX user will encounter a MFA prompt.
75 | Most other situations are noted during execution failure.
76 |
77 | ## What should I do about ImmyBot's upcoming code-signing certificate change?
78 |
79 | ImmyBot's current code-signing certificate is set to expire Feb. 12th, 2025. We plan to switch over to our new certificate a day early on Feb. 11th, 2025 to ensure a smooth transition.
80 |
81 | This certificate is used to sign our Agent binaries & installers delivered to machines.
82 |
83 | Unfortunately, our new certificate's `Organization(O)` and `Common Name(CN)` fields are changing from `Immense Networks` to `ImmyBot LLC`.
84 |
85 | New Certificate on Feb. 11th, 2025:
86 | ```
87 | CN=ImmyBot LLC, O=ImmyBot LLC, L=Baton Rouge, S=Louisiana, C=US
88 | ```
89 |
90 | Existing Certificate:
91 | ```
92 | CN=Immense Networks, O=Immense Networks, L=Baton Rouge, S=Louisiana, C=US
93 | ```
94 | This means if you have followed either the [Security Software Exclusions](https://docs.immy.bot/troubleshooting.html#security-software-exclusions) or [ThreatLocker](https://docs.immy.bot/troubleshooting.html#threatlocker) Setup guides in the past,
95 | you must go through the guides again, adding our new certificate ***in addition*** to the existing certificate exclusion.
96 |
97 | ### *Will this certificate change mean I need to generate all new agent installers? Do I need to re-install the ImmyBot Agent on all my machines?*
98 | No. Binaries and installers signed with the existing certificate ***are valid and will continue to work past Feb. 12th, 2025 indefinitely*** as they were signed before the certificate expiry.
99 | Only new agents releases and installers generated after our transition period will be signed with our new certificate. This is why it is important to keep the prior certificate exclusions for instances with pre-exisiting machines.
100 |
101 | ## What Windows versions does ImmyAgent support?
102 |
103 | The ImmyAgent is written in .NET, and as such supports the same [Windows versions the .NET runtime supports](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md).
104 | **Currently, the ImmyAgent runs on .NET 7 and therefore supports Win7+ devices. However, support for .NET 7 is ending May 14th, 2024.**
105 | After May 14th, Immybot will be transitioning the Agent to the .NET 8 runtime. Win7 is not officially supported in .NET 8, and as such will no longer be supported in ImmyBot.
106 | Older systems may continue to work inside of ImmyBot with necessary updates applied, however, we will not be offering any support for unsupported machines.
107 | - Internal testing has shown Win7 (and similar) machines can still work on .NET 8 as long as they have the necessary updates, utilizing a [3rd party tool such as Legacy Update](https://legacyupdate.net/).
108 | ::: danger
109 | We do not endorse Legacy Update or similar tools. The best thing to do is upgrade the system. Use at your own risk.
110 | :::
111 |
112 | ## Can Immy make deploying via Intune more simple?
113 |
114 | Absolutely! There is a global [Task](#task) labeled "**Deploy ImmyAgent to Intune**" that can do an excellent job of it.
115 | - Ensure you are using the [**Custom** Graph Permissions](https://docs.immy.bot/azure-graph-permissions-setup.html#custom)
116 | - Ensure you have added the Graph **Application** permission DeviceManagementConfiguration.ReadWrite.All to your app registration
117 | - Ensure you have re-consented to your linked tenants with your new Custom registration
118 | - If there is a failure of the deployment, there is likely a permissions issue with the app registration
119 |
120 | ## Can Immy help migrate my customers to AzureAD from On-Premises environments?
121 |
122 | Yes, we have a [Task](#task) that can migrate machines to associate the user’s profile to their Azure AD identity and join the machine to Azure AD. It can also do the same to and from Active Directory
123 |
124 | ## Domain Join didn’t work, what gives?
125 |
126 | Make sure there is a Domain Controller in Immy for the machine. If you are using a supported RMM like CW Automate/Control setup the integration so the Domain Controller is imported automatically. Otherwise, you’ll need to install the ImmyAgent on a domain controller for that customer.
127 |
128 | If the Domain Controller doesn’t have the red “Domain Controller” designation, press “Run Inventory”. This may happen if it was recently added to ImmyBot.
129 |
130 | Pay attention to the script output, Immy may be reporting that there is a name collision, or that it was unable to run scripts on the domain controller, usually due to security software.
131 |
132 | ## Why are my computers stuck in [Identification](#identification)
133 |
134 | 1. The machine has a security tool like Defender for Endpoint, Crowdstrike, Bitdefender or Threatlocker blocking our scripts from running
135 |
136 | - You'll want to create exclusions for ImmyBot
137 |
138 | 1. WMI is broken on the machine (Usually on older machines)
139 |
140 | ## Can you target devices in Azure Groups?
141 |
142 | Yes, but ImmyBot requires an additional permission on the ImmyBot app registration. You need to grant the `Microsoft Graph - Devices.Read.All` permission in order for devices to be pulled from Azure Groups.
143 |
144 | ## How do I uninstall the ImmyAgent?
145 | Create a deployment for the "ImmyBot Agent" and set software should be to "Uninstalled"
146 |
147 | 
148 |
149 | Or
150 |
151 | Run the following from Command Line
152 | ```
153 | wmic product where name="ImmyBot Agent" call uninstall /nointeractive
154 | ```
155 | Or
156 | ```
157 | $product = Get-WmiObject win32_product | `
158 |
159 | where{$_.name -eq "ImmyBot Agent"}
160 |
161 | $product.IdentifyingNumber
162 |
163 | msiexec /x $product.IdentifyingNumber /quiet /noreboot
164 | ```
165 |
166 |
167 | ## How/are we able to define which version of Windows is installed during the initial setup?
168 |
169 | ImmyBot doesn't install Windows on bare metal. The workflow is you unbox the system from Dell, HP, Lenovo, Microsoft, or your manufacturer of choice and insert the USB with the ImmyBot.ppkg file at the root while the machine is at the out of box screen.
170 |
171 | We don't image the machine, we script the factory image into compliance.
172 |
173 | We can, however, install Feature Updates during Onboarding (as well as after Onboarding)
174 |
175 | ## Since Immy.Bot doesn’t use an ISO, does it require a device to have the ability to have 2 USB devices plugged in? One for a Windows ISO and one for the ImmyBot ppkg?
176 |
177 | If you want to wipe the computer you can use the Media Creation Tool to create a Windows Setup flash drive and then put our .ppkg file on it. After installing Windows, it will automatically apply the .ppkg
178 |
179 | ## Does Immy rely on the Windows preboot for drivers during initial deployment, or does the ImmyBot agent installer have drivers?
180 |
181 | Since we are working with the manufacturer's image, all drivers are typically installed. We will automatically install Dell, HP, and Lenovo driver and BIOS updates via those manufacturer's tools (Dell Command, HP Image Assistant, Lenovo System Update)
182 |
183 | ## Does Immy’s setup process support a USB NIC for WiFi? If so, how do we present those drivers to Immy, or do we even need to?
184 |
185 | I've found Windows has built in drivers for most USB NICs. If yours doesn't have drivers built into Windows, I'd suggest purchasing one that does.
186 |
187 | ## SentinelOne - How do we define which site Immy.Bot places the agent in during installation of the S1 agent?
188 |
189 | Supply ImmyBot with an API Key to SentinelOne, and Immy will look for a Site in your SentinelOne instance that matches the name of the Tenant you are onboarding the computer for.
190 |
191 | ## Are there any repository limits for software deployments? Either to the size of custom software or number of custom installers we can upload?
192 |
193 | There are currently no limits. Everything you upload goes into an Azure Storage Account created just for your ImmyBot instance. Don't be the reason we can't have nice things.
194 |
195 | # For computer rename, are there any other operators we can use when naming devices other then the ones shown? Can we add operators?
196 |
197 | You can duplicate the Task into your instance an manipulate it however you like. If it's something you think other MSPs could use, I'd encourage you to submit a request on the [ImmyBot Community](https://community.immy.bot) and we can add it.
198 |
199 | ## Employee profile caching during on-boarding - is this supported? If so/how?
200 |
201 | ImmyBot will create a profile for the Primary Person you selected for this machine on the Onboarding screen (It does this via the "Create Profile for Primary Person" task)
202 |
203 | We do this so subsequent tasks that set user level settings like default PDF handler and default browser, have the profile for the primary person and thus that user's HKCU where those settings live.
204 |
205 | ## For purchasing Immy, do you guys prefer Credit card or invoice? Would you rather us pay monthly, or can we pay all upfront?
206 |
207 | We prefer monthly credit card or ACH.
208 |
209 | ## Is Immy able to group devices and then do role based deployments to them? I assume this is done by tags?
210 |
211 | Yes, you would accomplish this with tags
212 |
213 | ## BitLocker - does this write the key to Azure AD by chance?
214 |
215 | Yes, but we can't verify that it is written to Azure AD as that would require additional privileges that our App Registration doesn't request.
216 |
217 | We also write the Bitlocker Recovery Key to Active Directory for Domain Joined machines. This doesn't require any Group Policy setup, or line of site to the domain controller. This works as long as the machine is joined to a domain and there is a domain controller for that domain in ImmyBot.
218 |
219 | ## Is Immy able to reset Windows / Wipe and Reload a computer?
220 |
221 | Yes, the current process will be simplified but here's how to do it:
222 |
223 | 1. Click Download ImmyAgent on the left to create a PPKG with the Windows Reset option selected
224 |
225 | 
226 |
227 | 
228 |
229 | 2. Create a Deployment for "Apply Provisioning Package (PPKG)" to deploy the PPKG to the specified machine
230 |
231 | 
232 |
233 | ## ImmyBot Agent logs show an error of "The specified SAS token is expired"
234 |
235 | This will occur if the device's system time is incorrect. Ensure that the system time is correct and then restart the ImmyBot Agent Service.
236 |
237 | ## What are trusted manufacturers?
238 |
239 | Dell, HP, and Lenovo are considered trusted manufacturers. A trusted manufacturer is expected to provide unique serial numbers for their devices. We rely on trusted manufactuers and device serial numbers during device identification. If the agent reports it comes from a trusted manufacturer and a computer already exists inside ImmyBot with the same manufacturer and serial number, then we will automatically associated the agent with the existing computer.
240 |
241 | ## Can I embed the ImmyAgent into an image?
242 |
243 | Create a PPKG and place it in `C:\Recovery\Customizations`, create the folder if it doesn't exist.
244 |
245 | You can also use [SetupComplete](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/add-a-custom-script-to-windows-setup?view=windows-11)
246 | This method was confirmed working on Server 2022.
247 |
248 | Place both the ImmyAgent EXE installer and the SetupComplete.cmd in the C:\Windows\Setup\Scripts directory
249 | Content of SetupComplete.cmd can be as simple as:
250 | start C:\Windows\Setup\Scripts\ImmyAgentInstallerBundle.exe /qn
251 |
252 | A member of the ImmyBot community also likes to use the below method to embedded a PPKG into an image:
253 | ```
254 | DISM.exe /Image:D:\mount /Add-ProvisioningPackage /PackagePath:C:\Users\Moi\Downloads\ImmyBotAgentInstaller.ppkg
255 | ```
256 |
257 | ## Do you take requests for features/software/tasks/scripts?
258 |
259 | Yes, please feel welcome to submit a request on the [ImmyBot Community](https://community.immy.bot)
260 |
261 |
262 | ## Where do I find a file that was uploaded to a computer through ImmyBot Remote Control?
263 |
264 | Files uploaded through ImmyBot Remote Control can be found at %ProgramData%\RemoteControl\Shared
265 |
266 | ## Why am I getting this system update notification?
267 |
268 | We have something new and cool, be it a feature or bug fix!
269 | The system updates usually take 5-10 minutes to apply and restart your instance. During this time your instance will not be accessible.
270 | There are no sessions triggered on any endpoints as a result of the update, and if there are any sessions running when the update starts they will be restarted after the update completes.
271 | If you prefer not to think about doing updates, you can also schedule a time for automatic system updates to happen under Show More > Preferences.
272 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Welcome to ImmyBot Docs Github Repo
2 |
3 | Changes made to the main branch here are pushed to https://docs.immy.bot/ automatically.
4 |
5 | Feel free to contribute! We may even make you a [contributor](https://immy.bot/i-want-to-be-a-contributor/)
6 |
7 | To test locally, start by cloning this repo then opening the folder in VS Code.
8 |
9 | VS Code will recommend certain extensions when opening it the first time, we recommend you install these.
10 |
11 | Then run the following to install the required dependencies
12 |
13 | ```
14 | yarn install
15 | ```
16 |
17 | To host locally, run
18 |
19 | ```
20 | yarn docs:dev
21 | ```
22 |
23 |
--------------------------------------------------------------------------------
/add-users.md:
--------------------------------------------------------------------------------
1 | # Adding Users
2 |
3 | Have the person attempt to login to ImmyBot. Have them request access:
4 |
5 | 
6 |
7 | Approve that access from a yellow indicator at the top of the screen.
8 |
9 | 
10 |
--------------------------------------------------------------------------------
/azure-graph-permissions-setup.md:
--------------------------------------------------------------------------------
1 | # AzureAD/365 Graph Permissions
2 |
3 | Your first ImmyBot tenant will be automatically linked to the Azure tenant that you signed up for ImmyBot with. You can link other ImmyBot tenants to Azure from the tenant Azure tab.
4 |
5 | ## Linking to an Azure Tenant
6 |
7 | After creating an ImmyBot tenant, link it to an Azure tenant by navigating to the Azure tab in ImmyBot and entering the Azure tenant's principal id or domain and clicking `Save`.
8 |
9 | ## Azure Permission Level
10 |
11 | Once your ImmyBot tenant has been linked to Azure, you can set the **Azure Permission Level** from the tenant Azure tab. This allows ImmyBot to:
12 |
13 | 1. Sync all users from the Azure tenant
14 | 2. Sync all users from your GDAP customers **(please see [GDAP Customers](#gdap-customers))**
15 | 3. Install the 365 applications a user is licensed for
16 | - Apps for business/Apps for entrprise/Project/Visio
17 | 4. Deploy software to Teams, On-Premises Security Groups
18 | - Ex. Everyone in the Engineering Team gets AutoCAD 2022
19 |
20 | The **Azure Permission Level** has two modes: _Default_ and _Custom_
21 |
22 | **NB: In both the _Default_ and _Custom_ modes, consent must be provided for each customer you want to sync. Please see [GDAP Customers](#gdap-customers) for requirements**
23 |
24 | ### Default
25 |
26 | In this mode, you don't need to create an app registration. You consent as an administrator, allowing ImmyBot access users in your tenant and your customers tenants. **Please see [GDAP Customers](#gdap-customers) if you want ImmyBot to access your customers' users**.
27 |
28 | ### Custom
29 |
30 | In this mode, you create an App Registration and provide its Application (client) Id and Secret to ImmyBot, allowing you to customize the permissions Immy has to you and your customer's environments.
31 |
32 | #### Create an App Registration
33 |
34 | Navigate to:
35 |
36 | 
37 |
38 | 
39 |
40 | 
41 |
42 | **Important!** Your app registration must have a Web redirect uri of `https://.immy.bot/consent-callback`, replacing `` appropriately
43 |
44 | #### Grant Permissions
45 |
46 | See the screenshots below for the minimum permissions.
47 |
48 | 
49 |
50 | 
51 |
52 | 
53 |
54 | > [!NOTE]
55 | > Since they are commonly used, please note that the `DeviceManagementManagedDevices.ReadWrite.All` permission is required for MDM enrollment with the **"Join AzureAD"** and **"Configure Directory"** tasks.
56 |
57 | #### Create Client Secret
58 |
59 | 
60 |
61 | 
62 |
63 | 
64 |
65 | **Please see [GDAP Customers](#gdap-customers) if you want ImmyBot to access your customers' data**.
66 |
67 | #### Copy the `Application (client) ID` and `Client Secret Value` into the form in ImmyBot.
68 |
69 | ## GDAP Customers
70 |
71 | To sync users from GDAP customers of your Azure Partner, permission must be granted in the customer
72 | tenants to Immy's app registration (_Default_ or _Custom_). This can be achieved either by clicking
73 | on the `Consent` button for each customer individually ("Manual consent") or by using the
74 | Pre-consent button ("Pre-consent").
75 |
76 | ### Manual Consent
77 |
78 | This can be done by clicking on the `Consent` or `Reconsent` button for the customer on either the
79 | Azure Settings page or ont he Azure tab of the ImmyBot tenat linked to the customer.
80 |
81 | **NB: When manually consenting to an Azure customer, you must authenticate using an administrator account from that customer!**
82 |
83 | ### Pre-Consent
84 |
85 | Immy can automatically grant consent to your GDAP customers using the Partner Center API, removing
86 | the need to consent to each customer individually. To do this, you must authenticate to the Partner
87 | Center API with a user in the partner tenant that meets these requirements:
88 | 1. Is a member of the `AdminAgents` security group
89 | 2. Is given the `Application administrator` and `Privileged role administrator` Entra roles at the customer through the GDAP relationship
90 |
91 | #### Example: GDAP Role Assignments
92 |
93 | Here is an example GDAP relationship configuration that will work with Immy's pre-consent functionality:
94 |
95 | 1. Create security group in the partner tenant named `Application Administrators`
96 | 2. Create security group in the partner tenant named `Privileged Role Administrators`
97 | 3. Assign the `Application administrator` Entra role to the `Application Administrators` security group on the customer's admin relationship
98 | 4. Assign the `Privileged role administrator` Entra role to the `Privileged Role Administrators` security group on the customer's admin relationship
99 | 5. Add the partner user that you wish to sign-in to the Partner Center API with to `AdminAgents`, `Application Administrators` and `Privileged Role Administrators` security groups
100 |
101 | For more information, see these Azure docs:
102 | - [Obtain permissions to manage customer](https://learn.microsoft.com/en-us/partner-center/gdap-obtain-admin-permissions-to-manage-customer)
103 | - [Assign Microsoft Entra roles](https://learn.microsoft.com/en-us/partner-center/gdap-assign-microsoft-entra-roles)
104 |
105 | ## Common Issues
106 |
107 | ### Consent
108 |
109 | #### AADSTS500113: No reply address is registered for the application
110 |
111 | This error occurs when the redirect uri is not set correctly on the custom app registration.
112 | Please follow these steps to set the redirect uri correctly:
113 |
114 | 1. Navigate to the [Azure Portal](https://portal.azure.com)
115 | 1. Navigate to the [Microsoft Entra ID blade](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Overview)
116 | 1. Navigate to the [App Registrations blade](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)
117 | 1. Select the app registration you created for ImmyBot
118 | - You may need to change the filter to "All Applications"
119 | - You can paste the Application (client) ID of your custom app registration into the search box to find it
120 | 
121 | 1. Navigate to the Authentication blade
122 | - Select "Add a platform"
123 | - Select "Web" as the type
124 | 
125 | - Enter `https://.immy.bot/consent-callback` as the redirect uri, replacing `` appropriately
126 | - Click "Configure"
127 | 
128 |
129 |
--------------------------------------------------------------------------------
/connectsecure-integration-setup.md:
--------------------------------------------------------------------------------
1 | # ConnectSecure Dynamic Integration
2 |
3 | ### Setting up this integration allows you to:
4 |
5 | - Agent identification by adding an inventory script to be run against all of your endpoints
6 | - Importing agents from linked clients into ImmyBot
7 | - Mapping clients from the integration to tenants in ImmyBot
8 | - Getting an install token for a specific client
9 |
10 | ### Prerequisites
11 |
12 | - The tenant name you use to log in to the ConnectSecure portal
13 |
14 | ## Create ImmyBot Api User
15 |
16 | 1. On the home page, switch to the Global view
17 |
18 | 
19 |
20 | 2. Open the toolbar on the left and navigate to Settings > Users
21 |
22 | 
23 |
24 | 3. Create a new api user, `AssetViewer` is the only role you need. Other viewer roles might be utlized in future interfaces, if you want to add them.
25 |
26 | 
27 |
28 | 4. Save and copy the Client ID and Client Secret
29 |
30 | ## Get "pod" URL
31 |
32 | 1. Open the API Documentation from user icon menu in ConnectSecure portal.
33 |
34 | 
35 |
36 | 2. Grab the root URL from the API Documentation
37 |
38 | 
39 |
40 | ## Create Integration in ImmyBot
41 |
42 | 1. Create a new ConnectSecure Dynamic Integration from Show More -> Integration -> Add Integration -> ConnectSecure.
43 |
44 | 2. Insert the information you have previously obtained into the parameter fields.
45 |
46 | 
47 |
48 | 3. Click "Update"
49 | 4. Map clients, as necessary.
50 |
51 | 
52 |
53 | 5. Your done
--------------------------------------------------------------------------------
/connectwise-automate-integration-setup.md:
--------------------------------------------------------------------------------
1 | # ConnectWise Automate
2 |
3 | Setting up this integration allows you to
4 | 1. Import customers from Automate
5 | 2. Import computers from Automate
6 | 3. Manage all computers in Automate without deploying the ImmyBot Agent
7 | 4. Map customers from Manage to ImmyBot tenant based on existing Automate<->Manage relationship
8 |
9 | ## Create ImmyBot Role
10 | ImmyBot requires the following permissions in Automate
11 |
12 | - Core
13 | - Clients.Read
14 | - Clients.Show All
15 | - Computers.Show All
16 | - Computers.Edit (For moving existing computers to new locations
17 | - Computers.Delete (For retiring duplicate computers)
18 | - Groups.Show All
19 | - Locations.Show All
20 | - Patch Manager.Read (Required if you want Immy to apply approved Windows Updates)
21 |
22 | 
23 |
24 | 
25 |
26 |
27 | ## Create ImmyBot User
28 | 
29 |
30 | 
31 |
32 | 
33 |
34 | ## Enable Google MFA for ImmyBot User
35 |
36 | The integration requires Google for MFA. Duo is not supported as Duo does not expose the MFA token anywhere for us to use and doesn't appear to be the standard TOTP like Google uses.
37 | You will need to exclude the integration user from your Duo deployment if using Duo and configure the Google MFA plugin for Automate for this user.
38 |
39 | 
40 |
41 | 
42 |
43 | 
44 |
45 | ## Add RMM Link for CW Automate
46 |
47 | 
48 |
49 | 
50 |
51 | 
52 |
53 | 
54 |
55 | ## Import your customers
56 |
57 | 
58 |
59 | 
60 |
61 | Alternatively, you can create/map only certain customers.
62 |
63 | When you map a customer from an RMM, the computers will undergo Identification
64 |
65 | 
66 |
67 | 
68 |
69 | 
70 |
--------------------------------------------------------------------------------
/connectwise-control-integration-setup.md:
--------------------------------------------------------------------------------
1 | # ConnectWise Control
2 |
3 | Setting up this integration allows you to
4 | 1. Import customers from Control
5 | 2. Import computers from Control
6 | 3. Manage all computers in Control without deploying the ImmyBot Agent
7 | 4. Remote into computers from the ImmyBot interface using Control (Note: We default to requiring customer consent, you can disable this under Settings->Preferences)
8 | 5. Fix the Automate agent using the Control agent (by creating a cross-tenant deployment for the Automate Agent and creating a schedule for your customers)
9 |
10 | ## Install ImmyBot Extension for Control
11 |
12 | 
13 |
14 | 
15 |
16 | 
17 |
18 | ## Create RMMLink for Control
19 |
20 | 
21 | 
22 | 
23 |
24 | ## FAQ
25 | What custom property do I use?
26 |
27 | By default most ConnectWise Control instances you would select 1 for the ClientName CustomProperty field, this is the "Company" property in Control.
28 | Secondary group is any number between 1-8 that you would like to group from based on Control groups.
29 | You can find more infomation about Control custom propertys here;
30 | https://docs.connectwise.com/ConnectWise_Control_Documentation/Get_started/Administration_page/Appearance_page/Add_custom_properties_to_sessions
31 |
32 | ## Import your customers
33 |
34 | 
35 |
36 | 
37 |
38 | Alternatively, you can create/map only certain customers.
39 |
40 | When you map a customer from an RMM, the computers will undergo Identification
41 |
42 | 
43 |
44 | 
45 |
46 | 
47 |
48 | ## Troubleshooting
49 |
50 | ConnectWise Control uses Sqlite under the hood, making it vulnerable to performance issues unless aggressive Database Maintenance Tasks are enabled.
51 |
52 | While ImmyBot only uses Control (and other integrations) to spawn an out-of-band connection, over the course of time the database can grow as ImmyBot establishes this connection on each machine once every 24 hours to collect inventory.
53 |
54 | Commands go into the SessionEvent table with EventType = 44
55 | Responses go into SessionConnectionEvent with EventType = 70
56 |
57 | ### Automatic Cleanup
58 | Ensure you have the following maintenance actions:
59 | Access Sessions: Purge records of session activity older than 7 days for all events EXCEPT AddedNote
60 |
61 | 
62 |
63 | Access Sessions: Purge records of session connections older than 7 days for Host and Guest connections
64 |
65 | 
66 |
67 | ### Manual Cleanup
68 |
69 | If you host Control yourself, you can restore performance by doing the following
70 |
71 | Download and Install [DB Browser for SQLite](https://sqlitebrowser.org/) on your server
72 | Open `C:\Program Files (x86)\ScreenConnect\App_Data\session.db`
73 | Navigate to SQL Editor
74 | Paste in the following SQL
75 |
76 | #### Soft delete all commands and responses (This usually solves the problem without kicking everyone out of Control)
77 | ```sql
78 | update SessionEvent set EventAttributes = 1 where EventType = 44;
79 | update SessionConnectionEvent set EventAttributes = 1 where EventType = 70;
80 | ```
81 | You will need to commit the changes in DB Browser. You can do this by clicking Write Changes at the top by clicking File->Save
82 | If you forget to tdo this it will prompt you to commit the changes, when you exit, click yes.
83 |
84 | The reason this works is because the UI doesn't fetch soft-deleted items, so things become much snappier.
85 |
86 | However, if it doesn't work, do you following
87 |
88 | #### Delete commands and responses older than 7 days
89 | ```sql
90 | -- Delete queue commands in db older than 7 days
91 | DELETE
92 | FROM SessionEvent
93 | WHERE (EventType = 44) AND (Time < DATETIME('now', '-7 day'));
94 |
95 | -- Delete responses older than 7 days
96 | DELETE
97 | FROM SessionConnectionEvent
98 | WHERE (EventType = 70) AND (Time < DATETIME('now', '-7 day'))
99 | ```
100 |
101 |
--------------------------------------------------------------------------------
/connectwise-manage-integration-setup.md:
--------------------------------------------------------------------------------
1 | # ConnectWise Manage
2 |
3 | Setting up this integration allows you to
4 | 1. Deploy Software to machines covered by a certain agreement type
5 | - Example: Deploy Huntress to all customers with a Managed Security Agreement
6 | 1. (Preferred) Deploy Software to machines covered by an Agreement with a specific Addition
7 | - Example: Deploy SentinelOne to all computers that have SentinelOne as an Addition on their agreement
8 |
9 | **If you use Automate, setup the Automate integration first and import your customers from there. Importing customers from Manage generally results in many unnecessary Tenants being created in ImmyBot. You can link Automate to Manage to leverage the existing mappings between Automate<->Manage instead of manually mapping your Manage customers**
10 |
11 | ## Create an ImmyBot Role with the following permissions
12 |
13 | - *Company -> Company Maintenance -> Inquire Level (All)*
14 | - *Finance -> Agreements -> Inquire Level (All)*
15 | - *Procurement -> Product Catalog -> Inquire Level (All)*
16 | - *Procurement -> Product -> Inquire Level (All)*
17 | - *Service Desk -> Service Tickets -> Inquire -> (All)*
18 | - Optional - Required for the technician tools feature
19 | - *System -> API Reports -> Inquire Level (All)*
20 |
21 | 
22 |
23 | 
24 |
25 | ## Create an API Member
26 |
27 | Go to *System -> Members* and create a new **API Member**
28 |
29 | 
30 |
31 | Create a new API key
32 |
33 | 
34 |
35 | ## Plugin the API Keys in ImmyBot
36 |
37 | Create a new PSA Link and fill in the **Provider Info**
38 |
39 | 
40 |
41 | # CW Manage Pod v1
42 |
43 | Setting up this integration allows you to Look up the contact's email address in Immy and shows you their computers (Immy does User Computer Affinity behind the scenes so you don't have to do it manually). Technicians can jump into their computers or push software via the ticket.
44 |
45 | 
46 |
47 |
48 | Go to Show More -> Integrations
49 |
50 | Add CW Manage Pod
51 |
52 | Go to ConnectWise -> Setup Tables -> Manage Hosted API -> +
53 |
54 | 
55 |
56 |
57 | ## Technician Tools
58 |
59 | [What is Technician Tools?](./terminology.md#technician-tools)
60 |
61 | **This feature only works for the `Service Ticket` screen.*
62 |
63 | ### Required Permissions
64 |
65 | Modify your immy.bot security role to include `Service Desk -> Service Tickets -> Inquire Level -> All`
66 |
67 | 
68 |
69 | ### Setup
70 |
71 | In ConnectWise Manage, you can use "Manage Hosted API Setup" to embed content on certain pages in the UI. You can set one up by navigating to `System -> Setup Tables -> Manage Hosted API Setup`
72 |
73 | 
74 |
75 | Copy the url template:
76 |
77 | ```https://.immy.bot/technician-pod/cw-manage/```
78 |
79 | The URL is specific to your instance. You'll need to replace `` with your domain and `` with your CW Manage integration id. This id can be found here:
80 |
81 | 
82 |
83 | After you setup the pod, navigate to a ticket, and it shoud load the technician tools pod for immy.bot.
84 |
85 |
--------------------------------------------------------------------------------
/getting-started.md:
--------------------------------------------------------------------------------
1 | # Getting Started / Thinking with Immy
2 |
3 | **The goal of ImmyBot is to setup a computer knowing only the customer and the end user.**
4 |
5 | Thinking with Immy means thinking in terms of how things "Should" be.
6 |
7 | You teach Immy how things "should" be by creating Deployments.
8 |
9 | ```mermaid
10 | graph LR
11 | subgraph "Deployment"
12 | Input["Software or Task"] -->|"Should Be"| DesiredState["Desired State"] -->|on| Group["One or More Computers"]
13 | end
14 | ```
15 | ```mermaid
16 | graph LR
17 | subgraph "Adobe Reader"
18 | Input1["Adobe Reader"] -->|"Should Be"| DesiredState1["Installed"] -->|on| Group1["All Workstations and Portable Devices"]
19 | end
20 | ```
21 |
22 | How things "Should" be is often dependent on external factors. For example
23 |
24 | - Customer A should have SentinelOne because they pay for it
25 | - Person A should have Visio 365 because he has a license for it
26 |
27 | Luckily, deployments can be conditionally applied based on the result of scripts that reach out to external sources
28 |
29 | ```mermaid
30 | graph LR
31 | subgraph "Should Deployment Apply?"
32 | Input --> Metascript
33 | Metascript --> True
34 | Metascript --> False
35 | end
36 | ```
37 |
38 | ```mermaid
39 | graph LR
40 | subgraph "Should Visio Install?"
41 | EndUser["Input: End User"] --> Script["Graph API Script: Does End User have Visio License?"]
42 | Script --> True1[True]
43 | Script --> False1[False]
44 | end
45 | ```
46 |
47 | This is out of the box functionality in ImmyBot. I'm just showing you how it works to illustrate the power of the rules engine.
48 |
49 | ## Overview
50 | ImmyBot deploys 2 things:
51 | 1. Software
52 | 1. Tasks
53 |
54 | Tasks are for anything that isn’t software, think Bitlocker, Power Options, etc.
55 |
56 | - You can use Tasks to configure software by selecting a "Configuration Task" for the software
57 | - Configuration Tasks are useful for configuring the application (even if the application wasn't installed by ImmyBot)
58 | - Configuration Tasks run after Immy determines the software is installed
59 | - Configuration Task parameters are available in all scripts related to the software
60 |
61 | ImmyBot tests everything it does before and after it does it.
62 | - Software
63 | - Version Detection - Runs before install to determine if installation is necessary, and after to verify the desired version is installed
64 | - DisplayName
65 | - Contains
66 | - Regex
67 | - Traditional (Wildcard \*)
68 | - UpgradeCode (For MSI based installs)
69 | - Script
70 | - Must return a version or null
71 | - Test Script - If software is installed, the failure of this test (the test script returning $false) will trigger a "Repair" action (default Uninstall/Install) of the application
72 | - Example: Check to verify Foxit PDF Editor is the Preview handler extension is working in Windows Explorer, reinstalling the PDF Editor usually corrects this scenario
73 | - Tasks
74 | - Test script (When using separate scripts)
75 | - Combined script returns $false when $method is 'test'
76 |
77 | ### Example: Adobe Reader
78 | We find that most MSPs install Adobe Reader by default so ImmyBot includes a Recommended Deployment that states
79 | - "the latest version of Adobe Reader should be installed for all Workstations and Portable Devices"
80 |
81 | When this rule applies (i.e. it isn't disabled or overridden by a more specific rule) ImmyBot will do the following:
82 | 1. Find the latest available version of Adobe Reader by running the Adobe Reader "dynamic version" script that uses a public API to return the latest full version number of Adobe Reader, as well as the URL to download it, the latest patch version of Adobe Reader, and the URL to download it.
83 | 2. Determine the installed version (if any) by looking for Adobe Reader in Add/Remove Programs on the machine
84 | 3. Queue an Install or Upgrade task (depending on the previous step)
85 | 4. Set Adobe Reader to be the default PDF handler by running the "configuration task" that verifies that Reader is the default handler for .PDF files for each user on the machine.
86 |
--------------------------------------------------------------------------------
/halo-integration-setup.md:
--------------------------------------------------------------------------------
1 | # HaloPSA
2 |
3 | Setting up this integration allows you to
4 | 1. Deploy Software to machines covered by a certain contract type
5 | - Example: Deploy Huntress to all customers with a Managed Security Contract
6 | 1. (Preferred) Deploy Software to machines covered by an Contract with a specific recurring invoice item
7 | - Example: Deploy SentinelOne to all computers that have SentinelOne on a recurring invoice as a recurring invoice item on their contract
8 |
9 | ## Create an ImmyBot Application under /config/integrations/api/applications
10 |
11 | - Under the details section, select the Client ID and Secret Authentication Method
12 | - Generate and copy the Client ID and Client Secret
13 | - The Login Type should be "Agent", and you should select an "Agent to log in as"
14 |
15 | ## Permissions:
16 |
17 | - read:customers -> Yes
18 | - read:contracts -> Yes
19 | - read:items -> Yes
20 | - edit:reporting -> Yes
21 | - edit:items -> Yes (*should not be needed > 2.99, API bug will not allow listing items without edit rights)
22 | - read:invoices -> Yes
23 | - read:software -> Yes
24 | - read:tickets -> Yes (required for the Technician Tools feature)
25 | - read:assets -> Yes (*future feature of the integration will include asset population, not currently necessary)
26 | - edit:assets -> Yes (*future feature of the integration will include asset population, not currently necessary)
27 |
28 | ## Plug in the Client ID and Client Secret in ImmyBot
29 |
30 | Create a HaloPSA Integration Link and fill in the **Integration Settings**
31 |
32 | 
33 |
34 |
35 | ## Embedded Ticket Tab
36 | HaloPSA version 2.125.5, introduced a new feature called Custom Tabs. You can configure these Custom Tabs to point to a web address, similar to an iframe.
37 |
38 | Within HaloPSA, configure the tab as follows:
39 |
40 | 
41 |
42 | This tab will then show on all tickets in the system, like this:
43 |
44 | 
45 |
46 | ## Technician Tools
47 |
48 | [What is Technician Tools?](./terminology.md#technician-tools)
49 |
50 | HaloPSA version 2.125.5 introduced a new feature called Custom Tabs. You can configure these Custom Tabs to point to a web address that is rendered as an iframe.
51 |
52 | Within HaloPSA, configure the tab as follows:
53 |
54 | 
55 |
56 | Copy the url template:
57 |
58 | ```https://.immy.bot/technician-pod/psa//ticket/$FAULTID```
59 |
60 | The URL is specific to your instance. You'll need to replace `` with your domain and `` with your halo integration id. This id can be found here:
61 |
62 | 
63 |
64 | After you setup the tab, navigate to a ticket and select the tab with the name you just created. It shoud load the technician tools page of immy.bot.
65 |
66 |
--------------------------------------------------------------------------------
/image-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image-1.png
--------------------------------------------------------------------------------
/image-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image-10.png
--------------------------------------------------------------------------------
/image-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image-2.png
--------------------------------------------------------------------------------
/image-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image-3.png
--------------------------------------------------------------------------------
/image-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image-4.png
--------------------------------------------------------------------------------
/image-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image-5.png
--------------------------------------------------------------------------------
/image-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image-6.png
--------------------------------------------------------------------------------
/image-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image-7.png
--------------------------------------------------------------------------------
/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/immense/immybot-documentation/51e2ab66f351b4a1ece768eb0331345481c07c8b/image.png
--------------------------------------------------------------------------------
/immy-commands.md:
--------------------------------------------------------------------------------
1 | # Metascripts / Cloud Scripts
2 |
3 | A Metascript is a script that runs scripts. These scripts run in the backend of ImmyBot.
4 |
5 | A Metascript can run a script on a computer using Invoke-ImmyCommand.
6 |
7 | ## Example
8 | ```powershell
9 | $ServerPSVersionTable = $PSVersionTable
10 | $ComputerPSVersionTable = Invoke-ImmyCommand {
11 | $ServerPSVersionTable = $using:ServerPSVersionTable
12 | Write-Host "Running from $env:ComputerName but ImmyBot backend is running PowerShell $($ServerPSVersionTable.PSVersion)" -ForegroundColor Green
13 | return $PSVersionTable
14 | }
15 | $VerbosePreference = 'Continue'
16 | Write-Verbose "Running from ImmyBot backend, but the computer is running Windows PowerShell $($ComputerPSVersionTable.PSVersion)"
17 | ```
18 | ## Output
19 | 
20 |
21 | Invoke-ImmyCommand is modelled after PowerShell's native Invoke-Command, up to and including the ability to pass real objects into and out of the remote runspace, while preserving stream information. We consider our approach superior to capturing standard output and standard error as a string like most automation tools.
22 |
23 | Metascripts allow you to do things like persist reboots since the context is held by the backend.
24 |
25 | ## Cloud Scripts
26 |
27 | A Cloud script is the same as a Metascript except it targets a Tenant instead of a specific computer. This is useful for manipulating settings in each customer's Azure environment.
28 |
29 | Collectively we refer to Metascripts and Cloud scripts as server-side scripts.
30 |
31 | ## Common Commands
32 |
33 | These commands are available in all server-side scripts.
34 |
35 | ### Connect-ImmyAzureAD
36 |
37 | Provides a wrapper around `Connect-AzureAD`
38 |
39 | - https://docs.microsoft.com/en-us/powershell/module/azuread/connect-azuread?view=azureadps-2.0
40 |
41 | #### Example
42 |
43 | ```powershell
44 | Connect-ImmyAzureAD
45 | Get-AzureADUser -All $true
46 | ```
47 |
48 | ### Get-ImmyAzureAuthHeader
49 |
50 | Obtains an auth header for the specified endpoint
51 |
52 | #### Usage
53 |
54 | ```powershell
55 | Get-ImmyAzureAuthHeader [-Endpoint] <["MSGraph", "AzureAD"]>
56 | ```
57 |
58 | Returns a `[dictionary]` containing the auth header
59 |
60 | #### Examples
61 |
62 | ```powershell
63 | $Header = Get-ImmyAzureAuthHeader -ErrorAction Stop
64 | $Groups = Invoke-RestMethod "https://graph.microsoft.com/v1.0/groups/
65 | ```
66 | ### Get-ProviderInfo
67 |
68 | Retrieves an instance of an RMM Provider for the specified type.
69 |
70 | #### Alias
71 | Get-RmmInfo
72 |
73 | #### Usage
74 |
75 | ```powershell
76 | Get-ProviderInfo [[-ProviderType] ] [-IncludeClients] []
77 | ```
78 |
79 | #### Examples
80 |
81 | ```powershell
82 | param(
83 | [string]$FieldName,
84 | [string]$Value,
85 | $Computer
86 | )
87 |
88 | if(!$Computer)
89 | {
90 | $Computer = Get-ImmyComputer
91 | }
92 | $RmmComputer = Get-RmmComputer -Computer $Computer -ProviderType CWAutomate
93 | $RmmInfo = Get-ProviderInfo -ProviderType CWAutomate
94 |
95 | $EDF = Get-CWAComputerEDF -FieldName $FieldName -Computer $Computer
96 | if(!$EDF)
97 | {
98 | Write-Warning "Aborting: Unable to find EDF $FieldName"
99 | return
100 | }
101 |
102 | $ExtraFieldDefinitionId = $EDF.ExtraFieldDefinitionId
103 | $ValueProperty = $EDF | select *FieldSettings* | Get-Member -MemberType NoteProperty | select -First 1 | %{$_.Name}
104 | $PatchPath = "$ValueProperty/Value"
105 | $Uri = "cwa/api/v1/computers/$($RmmComputer.RmmDeviceId)/extrafields/$ExtraFieldDefinitionId"
106 | $Body = ConvertTo-Json @(@{"op"="replace";"path"=$PatchPath;"value"=$Value})
107 | Invoke-CWARestMethod $Uri -Provider $RmmInfo.Provider -Method PATCH -Body $Body
108 | ```
109 |
110 | ## Metascript Commands
111 |
112 | ### Invoke-ImmyCommand
113 |
114 | A powerful command that allows you to execute scripts remotely on devices.
115 |
116 | #### Usage
117 |
118 | ```powershell
119 | Invoke-ImmyCommand [-ScriptBlock]