More

Self-hosting and open source

OpenIntern is open source. You can run the agent on your own Mac with the local server, or run the hosted service that powers the store add-in on infrastructure you control.

The source repository is not public yet. It will be published with the open-source release; join the waitlist to hear when. The commands below are how the released software works.

Licence

  • OpenIntern is licensed under the Apache License, Version 2.0. Copyright 2026 Curious Expeditions LLC.
  • The name "OpenIntern" and its logo are trademarks of Curious Expeditions LLC and are not covered by the licence. If you distribute a changed version, give it a different name.
  • The source distribution and the built task pane contain no third-party code. At run time the pane loads Microsoft's Office JavaScript library from Microsoft's servers, under Microsoft's terms, as every Office add-in does.
  • The software is provided as is, without warranty; see the licence and our Terms.

The local server

The local software is a small HTTPS server on your Mac that runs the agent, keeps your keys and records every change. The pane inside Office talks to it over https://localhost only; it does not accept connections from other computers.

Requirements

  • macOS with Microsoft 365 Excel, PowerPoint or Word.
  • Node.js 24.
  • An API key from a supported provider, or a local model runtime such as Ollama or LM Studio.

Commands

npx openintern start       # install or renew the certificate, start the server, register the add-in, open Excel
        npx openintern status      # running or not, certificate days left, which apps have the add-in
        npx openintern doctor      # check Node, certificate, server, listening address and file permissions
        npx openintern stop        # stop the server
        npx openintern uninstall   # stop the server and remove the add-in from Office

start runs the server on 127.0.0.1 under a supervisor that restarts it if it exits and logs every exit to ~/.openintern/logs/server.log. It takes --port, --no-sideload, --no-open and --open excel,powerpoint,word. uninstall keeps ~/.openintern (history, preferences and stored keys); add --certs to remove the development certificate too, after checking no other Office project uses it.

The certificate is Microsoft's localhost development certificate for Office add-ins. If a browser or Office warns about the certificate, don't click past it: run doctor to see what is wrong.

Windows

On Windows, start writes the add-in's manifest to ~/.openintern/manifest/openintern.xml and prints the two ways to register it: a shared-folder catalog (Trust Center > Trusted Add-in Catalogs) or the per-user developer registry entry. It does not edit the registry itself. Windows is not yet a qualified platform.

What is kept on your computer

Everything lives in ~/.openintern, readable only by you: provider keys (credentials.json), preferences and instructions, conversations, task records with the before and after state of every change, checkpoints, skills you install (skills/), MCP servers (mcp.json) and logs. Task records contain document content so that undo works after a restart.

Environment variables

VariableEffect
OPENAI_API_KEY, ANTHROPIC_API_KEY, …Supply a provider key from the environment instead of the pane. A key in the environment takes precedence over a stored one.
OPENINTERN_HOMEUse a different home folder (default ~/.openintern).
OPENINTERN_PORTUse a different port (default 3000).
OPENINTERN_NO_EGRESS=1Refuse every provider that is not on this computer, so only local models work.
OPENINTERN_PERSIST_TASKS=0Keep task records in memory only. Undo then works only until the server stops.

Only one OpenIntern server can use a home folder at a time; a second one refuses to start and names the process already using it.

Running the hosted service yourself

The store add-in runs the same pane and agent in "cloud mode": one public HTTPS origin serves the pane and the API, each visitor brings their own provider key, and each pane session gets its own isolated workspace. You can run it for your own organisation.

Run it

docker build -t openintern-cloud .
        docker run -p 8080:8080 -e OPENINTERN_PUBLIC_ORIGIN=https://addin.example.com openintern-cloud

The container serves plain HTTP on port 8080 behind your platform's TLS. Any platform that runs one long-lived container behind TLS works. Run a single instance: sessions are held in one process's memory, so a deploy or restart ends every session, and running tasks fail. Mount the scratch folder (/tmp/openintern-cloud) on a memory-backed file system. Our own deployment runs the same container on Cloudflare Containers.

VariableDefaultMeaning
OPENINTERN_MODEcloud in the imageRequired. The cloud server refuses to start without it.
OPENINTERN_PUBLIC_ORIGINnoneRequired. The one https origin the pane is served from, and the only origin allowed to call the API.
OPENINTERN_CLOUD_RATE_LIMIT240Requests per minute per client address.
OPENINTERN_CLOUD_SESSIONS_PER_HOUR120New pane sessions per client address per hour.
OPENINTERN_CLOUD_SESSIONS_PER_CLIENT24Live sessions per client address.
OPENINTERN_CLOUD_MAX_SESSIONS200Live sessions per server.
OPENINTERN_CLOUD_SESSION_IDLE_MINUTES30Idle time before a session and its files are deleted.
OPENINTERN_TRUST_PROXY0How many proxies' X-Forwarded-For entries to trust. Turn it on only behind a proxy that overwrites the header and is the only way to reach the server.

How cloud mode differs from the local server

  • Keys arrive with each request and are never stored. The server strips them from the request before the agent sees it and refuses requests to save a key.
  • Your own provider keys are never visible to visitors: sessions get an environment with no provider keys, no folder overrides and no MCP configuration.
  • Only providers with a fixed public address are offered. Local runtimes, custom endpoints, Azure and MCP servers are refused, because on a server they would mean starting processes or connecting to an address a visitor chose.
  • Requests with an unknown host name or from another origin are refused, and requests and new sessions are rate-limited per client address.
  • Each pane has its own session, so documents open in different windows cannot see each other.

Read the trade-offs before you offer it to others: keys travel to your server with every request and are visible to whoever runs or compromises it; document content sits unencrypted in a session's memory and scratch files until the session ends; and anyone who can reach the server can open a session, so put rate limiting and DDoS protection in front of it.

The add-in manifest

Office needs a manifest that points at your origin. The OpenIntern command line writes one, with a Home-tab button for Excel, PowerPoint and Word:

npx openintern manifest --base-url https://addin.example.com --support-url https://example.com/support --out manifest

A Microsoft 365 administrator can deploy it to your organisation from the Microsoft 365 admin center under Integrated apps, without a store review.

Accounts

The planned account service is part of the same open-source code. When it ships it stays off unless you configure it, and with it off the add-in works exactly as it does without accounts.