IEUM
IEUM is an open-source coding agent you can use in three places:
- terminal (
TUI) - browser (
WEB) - VS Code (
Extension)
It shares one agent core across all three, so your workflow stays consistent.
At A Glance
| Platform | Recommended Use | Runtime |
|---|---|---|
| TUI | Local development on your machine | Local |
| WEB | Centralized team server | Remote |
| VS Code | Both local and remote workflows | Local / Remote |
What You Get
- One agent core across TUI, WEB, and VS Code
- Tool use with approval flow (HITL)
- Session history and resume support
- Multi-provider LLM support (OpenAI, Anthropic, Ollama, OpenRouter, and more)
- Skill system (built-in + user/project skills)
- MCP integration (including GitHub MCP)
- English and Korean UI
Quick Start
1) Install
pip install ieum
Or with uv:
uv pip install ieum
2) Run TUI (local)
ieum
3) Run WEB
ieum --web --host 127.0.0.1 --port 8765
Open http://127.0.0.1:8765 and log in with the token printed in the server console.
Installation
Prerequisites
- Python 3.11+
ripgreprecommended for fast code search
From Source
git clone https://github.com/DDOK-AI/ieum.git
cd ieum
pip install -e .
Install WEB dependencies:
pip install -e ".[server]"
Install test/dev dependencies:
uv sync --group test
Configuration
Core Environment Variables
| Variable | Default | Purpose |
|---|---|---|
IEUM_LANG |
en |
UI language (en / ko) |
IEUM_AUTH_DISABLED |
false |
Disable auth (local dev only) |
IEUM_AUTH_TOKEN_TTL_SECONDS |
3600 |
Auth token TTL (min 60s) |
IEUM_CORS_ORIGINS |
localhost-only list | Allowed browser origins |
IEUM_REMOTE_ONLY |
false |
Block loopback-only bind in remote deployments |
IEUM_TLS_REQUIRED |
false |
Require HTTPS/WSS |
IEUM_TRUST_PROXY_TLS |
false |
Trust X-Forwarded-Proto=https from proxy |
IEUM_SSL_CERTFILE |
unset | TLS cert path (direct TLS termination) |
IEUM_SSL_KEYFILE |
unset | TLS key path (direct TLS termination) |
IEUM_RATE_LIMIT_ENABLED |
true |
Enable per-IP rate limiting |
IEUM_RATE_LIMIT_MAX_REQUESTS |
120 |
Max requests per window |
IEUM_RATE_LIMIT_WINDOW_SECONDS |
60 |
Rate limit window |
IEUM_SANDBOX_ROOT |
unset | Root for <user>/<workspace> sandboxing |
IEUM_REQUIRE_USER_ID |
false |
Require user identity header/query |
IEUM_SAFE_MODE |
false |
Extra command restrictions |
LLM Variables (Common)
| Provider | Variables |
|---|---|
| OpenAI | OPENAI_API_KEY, OPENAI_MODEL |
| Anthropic | ANTHROPIC_API_KEY, ANTHROPIC_MODEL |
| Ollama | OLLAMA_BASE_URL, OLLAMA_MODEL |
| OpenRouter | OPENROUTER_API_KEY, OPENROUTER_MODEL |
GOOGLE_API_KEY |
.env Priority
- Project
.env(current directory) - User
.env(~/.ieum/.env) - System environment
Config Directory
~/.ieum/
.env
auth_token
<agent>/
AGENTS.md
skills/
Usage
TUI (Local)
# interactive
ieum
# use a specific model
ieum --model anthropic/claude-sonnet-4-5-20250929
# resume latest thread
ieum -r
# auto-approve tool calls
ieum --auto-approve
Useful commands in chat:
/help/env/model <provider/model>/skills/threads/tokens
WEB (Remote-first)
Local check:
ieum --web --host 127.0.0.1 --port 8765
Remote deployment baseline:
export IEUM_REMOTE_ONLY=true
export IEUM_TLS_REQUIRED=true
export IEUM_TRUST_PROXY_TLS=true
export IEUM_CORS_ORIGINS="https://ieum.example.com"
export IEUM_AUTH_TOKEN_TTL_SECONDS=3600
export IEUM_RATE_LIMIT_ENABLED=true
export IEUM_RATE_LIMIT_MAX_REQUESTS=120
export IEUM_RATE_LIMIT_WINDOW_SECONDS=60
export IEUM_SANDBOX_ROOT="/srv/ieum/sandboxes"
export IEUM_REQUIRE_USER_ID=true
ieum --web --host 0.0.0.0 --port 8765
Notes:
- Wildcard CORS (
*) is rejected. - In required-user mode, send one of:
- header
x-ieum-user-id - header
x-ieum-user - query
user_id
- header
VS Code Extension
VS Code supports local, remote, and auto modes.
Key settings:
ieum.serverMode:local|remote|autoieum.remoteServerUrlieum.authTokenieum.serverPortieum.pythonPath
See the documentation for setup and troubleshooting (coming soon).
Production Checklist (WEB)
Before exposing the server:
- Set explicit
IEUM_CORS_ORIGINS(no*) - Enable
IEUM_TLS_REQUIRED=true - Set token TTL (
IEUM_AUTH_TOKEN_TTL_SECONDS) - Keep rate limit enabled
- Set
IEUM_SANDBOX_ROOT - Enable
IEUM_REQUIRE_USER_ID=truefor multi-user use
Architecture
TUI (Textual) WEB (FastAPI/WS) VS Code (Extension/WebView)
\ | /
\ | /
LangGraph Agent Core
|
Tools (file/shell/search/MCP/skills)
Main code locations:
| Area | Path |
|---|---|
| Agent core | ieum/agent.py |
| TUI app | ieum/app.py |
| WEB server | ieum/server/ |
| Sessions/persistence | ieum/sessions.py |
| Skills | ieum/skills/ |
| VS Code extension | vscode-ieum/ |
Development
# tests
python -m pytest -q
# extension build
cd vscode-ieum
npm run compile
Documentation
Documentation is being prepared. Stay tuned.
License
MIT
Metadata
Release files for ieum 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ieum-0.0.3.tar.gz | 9.5 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ieum-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.1 MB
Release files / ieum-0.0.3.tar.gz
| Download URL | ieum-0.0.3.tar.gz |
|---|---|
| Size | 9.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6e9b0fa72731eb229a090cc4b1b98fcad31fc8582b7da74c0470d45b2c57c27
|
|
BLAKE2b-256 checksum How to use checksums |
b0462dfe8a69cc0d433a7d5b11e88b1e80aeecafadeb24be07db18a51213ea84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / ieum-0.0.3-py3-none-any.whl
| Download URL | ieum-0.0.3-py3-none-any.whl |
|---|---|
| Size | 9.6 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6a595e34c1144ff8fb97625945781a6d6979d3d92ae58f34a84b897a430f2a6
|
|
BLAKE2b-256 checksum How to use checksums |
50cc4d9f2cddf3dc7ee1af5c31dc717ee792fbae96dd4f5237a2bd2c3b62af21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Security for ieum 0.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.