Skip to main content

Demonstrations of how AI coding and business agents work

Project description

Codemoo - Demonstrate how coding agents work under the hood

Requirements:

  • uv
  • An API key for either Mistral, Openrouter, or Anthropic
  • Microsoft Graph access is required for m365 mode

Installation

You should install Codemoo as a tool:

uv tool install . --editable

Important: Some of the demo bots can run destructable commands without any confirmation. Be careful with your prompts!

Configuration

Codemoo can run in two different modes:

  • code is the default mode where it is your friendly coding assistant (similar to Claude Code, OpenCode, Codex, and GitHub Copilot).
  • business requires access to Microsoft Graph and gives Codemoo access to your E-mail, Teams, Calendar and Sharepoint, very much like M365 Copilot.

General Setup

Variable Default Description
CODEMOO_LANGUAGE English Language for commentary, error messages, and demo slides and prompts

LLM Backends

Variable Default Description
CODEMOO_BACKEND mistral Name of LLM backend: mistral, openrouter, or anthropic
MISTRAL_API_KEY Mistral API key (required for mistral backend)
CODEMOO_MISTRAL_MODEL mistral-small-latest Mistral model used for all LLM calls
OPENROUTER_API_KEY Openrouter API key (required for openrouter backend)
CODEMOO_OPENROUTER_MODEL z-ai/glm-4.5-air:free Openrouter model used for all LLM calls
ANTHROPIC_API_KEY Anthropic API key (required for anthropic backend)
CODEMOO_ANTHROPIC_MODEL claude-haiku-4-5-20251001 Anthropic model used for all LLM calls

Microsoft Graph

Variable Default Description
CODEMOO_M365_TENANT_ID Microsoft Graph tenant ID
CODEMOO_M365_CLIENT_ID Microsoft Graph client ID
CODEMOO_SHAREPOINT_HOST contoso.sharepoint.com Base URL to Sharepoint
CODEMOO_SHAREPOINT_SITE /sites/demo Site link inside Sharepoint

Usage

Codemoo has two main modes: a coding assistant you can use directly, and a step-by-step demo that shows how coding agents work under the hood.

Coding assistant

Launch the chat with the most capable bot:

uv run codemoo

The business chat is named Enterproose, and can be run in the same way as Codemoo (requires an Entra app registration and correctly set environment variables.):

uv run enterproose
uv run codemoo --mode business

Use --bot to start with a specific bot by name, type, or 1-based index:

uv run codemoo --bot rune
uv run codemoo --bot 6

To pick a bot interactively before starting:

uv run codemoo select

To see all available bots:

uv run codemoo list-bots

Demo mode

Run through the bot progression to see how coding agents evolve step by step — from a simple echo bot up to a full agent loop.

Note: The example prompts for later bots reference files in the demo/ folder. Run the demo from there so the paths resolve correctly:

cd demo

Start the interactive demo by running Codemoo with the demo command:

uv run codemoo demo

Each bot is introduced with slides explaining what it can do and how it works. Press Ctrl-N to advance to the next bot, or Ctrl-Q to quit. Each bot also comes with a few example prompts. Press Ctrl-E to insert the next example prompt. You can then edit it or just press enter to submit it directly.

You can also start or end the demo with specific bots:

uv run codemoo demo --start telo --end loom

For different demo purposes, you can run with different preset scripts (lists of bots):

uv run codemoo list-scripts
uv run codemoo demo --script focused

Scripts can also be further customized by providing --start and --end.

Language support

You can set language with CODEMOO_LANGUAGE. For example, if you use CODEMOO_LANGUAGE=Norwegian then demo slides and prompts, as well as commentary and error messages will be translated to Norwegian (or your chosen language).

Bot progression

Coding path (--script default):

# Bot Capability
1 🦜 Coco Echo — repeats your message back
2 ✨ Mono LLM — single-turn language model call
3 🧿 Iris Chat — multi-turn conversation with history
4 🎭 Sona System prompt — chat with a persona
5 🔧 Telo Tools — can call a tool and act on the result
6 📁 Rune ReadBot — reads files and lists directories
7 🔨 Axel ChangeBot — runs shell commands and writes files
8 🌀 Loom Agent — full agentic loop with planning
9 🔒 Cato Guard — human-in-the-loop before risky actions

Business path (--script m365):

# Bot Capability
1 🦜 Coco Echo — repeats your message back
2 ✨ Mono LLM — single-turn language model call
3 🧿 Iris Chat — multi-turn conversation with history
4 🎭 Sona System prompt — chat with a persona
5 🔧 Telo Tools — can call a tool and act on the result
6 🚶 Roam ScanBot — reads SharePoint, email, and calendar
7 📤 Aero SendBot — sends email, creates events, posts to Teams
8 🌀 Loom Agent — full agentic loop over M365 data
9 🔒 Cato Guard — human approval before M365 actions

See BOTS.md for more information about the bots.

Microsoft Graph

If you run in business mode, you need to set up access to your Microsoft Graph tenant.

Register an Entra app

  1. Go to portal.azure.comMicrosoft Entra IDApp registrationsNew registration
  2. Name it (e.g. Codemoo Demo), leave supported account types as single tenant, and click Register
  3. On the app overview page, copy the Application (client) ID and Directory (tenant) ID
  4. Go to AuthenticationAdd a platformMobile and desktop applications → tick the https://login.microsoftonline.com/common/oauth2/nativeclient redirect URI → Configure
  5. Under Advanced settings on the same page, set Allow public client flows to YesSave

The redirect URI and public client flag enable the device code flow Codemoo uses — no client secret is needed.

Grant API permissions

Go to API permissionsAdd a permissionMicrosoft GraphDelegated permissions and add:

Permission Consent required Used by
Mail.Read User Read email
Mail.Send User Send email
Calendars.ReadWrite User Read and create calendar events
Sites.Read.All Admin Read SharePoint documents
Files.ReadWrite.All Admin Write SharePoint documents
ChannelMessage.Send Admin Post Teams messages

For the m365_lite script only Mail.Read, Mail.Send, and Calendars.ReadWrite are needed — no admin consent required.

After adding permissions, click Grant admin consent for <tenant> if you have admin rights, or ask your tenant admin to do so for the admin-only permissions.

Configure Codemoo

Set the tenant and client IDs via environment variables:

export CODEMOO_M365_TENANT_ID=<your-tenant-id>
export CODEMOO_M365_CLIENT_ID=<your-client-id>
export CODEMOO_M365_SHAREPOINT_HOST=<your-tenant>.sharepoint.com
export CODEMOO_M365_SHAREPOINT_SITE=/sites/<your-site>

Authenticate

The first time you run in business mode, Codemoo will print a device code and a URL:

To sign in, use a web browser to open the page https://microsoft.com/devicelogin
and enter the code ABCD1234 to authenticate.

Open the URL, enter the code, and sign in with your Microsoft account. The token is cached at ~/.cache/codemoo/token_cache.bin so subsequent runs are silent for up to 90 days.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codemoo-2026.4.0.tar.gz (34.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

codemoo-2026.4.0-py3-none-any.whl (54.9 kB view details)

Uploaded Python 3

File details

Details for the file codemoo-2026.4.0.tar.gz.

File metadata

  • Download URL: codemoo-2026.4.0.tar.gz
  • Upload date:
  • Size: 34.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for codemoo-2026.4.0.tar.gz
Algorithm Hash digest
SHA256 72f33bd597d743ea6168f65d09f9f121eb262fe7ab1b766578b1f7f34236f7ec
MD5 7337a68b2cf2528d9689d653d74d0952
BLAKE2b-256 67f9e3600402e30a959007256ea58d078577655ac0c7a0ce8f0146afe1d54450

See more details on using hashes here.

Provenance

The following attestation bundles were made for codemoo-2026.4.0.tar.gz:

Publisher: publish.yml on gahjelle/codemoo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file codemoo-2026.4.0-py3-none-any.whl.

File metadata

  • Download URL: codemoo-2026.4.0-py3-none-any.whl
  • Upload date:
  • Size: 54.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for codemoo-2026.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a7e2c101ad3fe648f6ae6c2fcea58d289194fa03606f3a26448eaeed0b927fed
MD5 b75c6d5e3d5edeeffa81a1f277c688f5
BLAKE2b-256 81da04c2dc1823912d3713f6a8945bcae6028cfab176d5e35fcccfcb308d3dd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for codemoo-2026.4.0-py3-none-any.whl:

Publisher: publish.yml on gahjelle/codemoo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page