Repository: github.com/3eyedtech-creator/educode-agent
EduCode is a local-first, RAG-aware coding agent CLI. Open any project folder, run educode, and work with your codebase through natural language — ask questions, generate changes, debug failures, and run validation tasks.
It works similarly to Claude Code: the agent indexes your repository, understands context via semantic search, and uses a multi-agent supervisor (planner, coder, reviewer, runner) with human approval before mutating files.
Before using EduCode, make sure you have:
| Requirement | Details |
|---|---|
| Python | 3.11 or newer |
| OpenAI API key | Required for LLM calls and embeddings (OPENAI_API_KEY) |
| Git | Recommended (diffs, project workflows); not strictly required for basic use |
| Internet | Required for OpenAI API calls during chat/run |
Optional:
| Variable | Purpose |
|---|---|
LANGCHAIN_API_KEY |
LangSmith tracing (smith.langchain.com) |
TAVILY_API_KEY |
Web search (when wired in future releases) |
QDRANT_URL |
Remote Qdrant; omit to use embedded local storage |
No Docker or separate vector database install is needed — Qdrant runs embedded locally.
Install from PyPI with pip:
pip install educode-agentPyPI normalizes names, so this also works:
pip install educode_agentFor an isolated CLI install (recommended, like Claude Code):
pipx install educode-agentVerify the educode command is available:
educode --versionIf educode is not found, ensure your Python scripts directory is on PATH:
| Platform | Typical scripts location |
|---|---|
| Linux / macOS | ~/.local/bin |
| Windows | %APPDATA%\Python\Python3xx\Scripts |
Then open any project folder and start the agent:
cd /path/to/your-project
educodeThat launches the interactive chat session (same as educode chat).
git clone https://github.com/3eyedtech-creator/educode-agent.git
cd educode-agent
poetry installVerify the CLI:
poetry run educode --version- Copy the example env file:
cp .env.example .env- Add your OpenAI key to
.envor export it in your shell:
# Linux / macOS
export OPENAI_API_KEY=sk-your-key-here
# Windows PowerShell
$env:OPENAI_API_KEY = "sk-your-key-here"- (Optional) Set user-level EduCode home — defaults to
~/.educode/:
export EDUCODE_HOME=~/.educode# 1. Go to your project
cd /path/to/your-project
# 2. One-time setup: create .educode/ and index the codebase
educode init
# 3. Start interactive session (same as `educode chat`)
educodeAfter init, you should see a header with repo, model, and index info, then:
Ready. Run: educode chat
If you skip init, the first educode or educode chat run will auto-initialize the project and index the repository.
cd /path/to/your-project
educodeOr explicitly:
educode chatInside the REPL:
| Input | Action |
|---|---|
| Your question or task | Agent searches codebase, reads files, responds or proposes edits |
/status |
Show current thread_id and model |
/exit or /quit |
End session |
Ctrl+C |
Pause; prints resume command with --thread-id |
Example prompts:
Where is user authentication handled?Add input validation to the login endpointWhy is tests/test_users.py failing? Run tests and fix the issue.
Run a single task and exit:
educode run "add pagination to the /users endpoint"Sessions are persisted with a thread_id (Sqlite checkpointer). Resume with:
educode chat --thread-id <your-thread-id>
educode run --thread-id <your-thread-id> "continue previous task"These apply to all commands:
educode [OPTIONS] COMMAND [ARGS]...
Options:
--version Show version and exit
-v, --verbose Enable DEBUG logging
--model TEXT Override model (e.g. openai:gpt-4o-mini)
--repo DIRECTORY Project root (default: current directory)Examples:
educode --repo ~/projects/my-api chat
educode --model openai:gpt-4o-mini run "refactor auth middleware"
educode -v chatCreates local EduCode state in your repository:
your-project/
├── src/
└── .educode/
├── config.yaml # per-project settings
├── rag_manifest.json # indexed file hashes
├── sessions.db # session metadata
└── tasks/ # per-thread checkpoint DBs
init also adds .educode/ to .gitignore when possible.
educode init # full init + codebase indexing
educode init --skip-index # config only, no indexingIndexing walks your repo (skips node_modules, .venv, __pycache__, etc.), chunks source files, embeds them, and stores vectors in local Qdrant.
educode config show
educode config set model=openai:gpt-4o-mini
educode config set token_budget=250000
educode config set auto_approve=falseCommon keys:
| Key | Description | Default |
|---|---|---|
model |
LLM model identifier | openai:gpt-4o |
token_budget |
Project token budget | 500000 |
auto_approve |
Skip approval prompts for mutating tools | false |
active_skill |
Active skill name (optional) | none |
strict_api_keys |
Require API keys at startup | true |
User-level settings override defaults and are merged before project config. Use the same keys as project config.
Before writing files or running terminal commands, EduCode asks for approval unless auto_approve=true:
Approve changes? [y/n]
Use y to approve, n to reject. For production work, keep auto_approve=false.
- Index —
educode initchunks and embeds your codebase into local Qdrant. - Retrieve — During chat/run, the agent calls
search_codebaseto find relevant code. - Plan & execute — A supervisor delegates to planner, coder, reviewer, and runner sub-agents.
- Persist — Conversation state is checkpointed per
thread_idfor multi-turn sessions and resume.
Set the key in your environment or .env:
export OPENAI_API_KEY=sk-...Or run init/chat with project config strict_api_keys=false (not recommended for production).
Re-index the project:
educode initEnsure files are not in ignored directories (node_modules, .venv, etc.).
Pass --repo explicitly:
educode --repo /absolute/path/to/project chateducode -v chatSee DEVELOPMENT.md for copy-paste commands to test locally, verify PyPI releases, and publish new versions.
Quick start:
poetry install --with dev
poetry run pytest tests/unit
poetry run educode --model mock:loop run "test task"MIT — see LICENSE.
- Create an account at pypi.org.
- Register the project name
educode-agenton PyPI (first upload claims it). - Enable Trusted Publishing on PyPI for this GitHub repo (recommended):
- PyPI project → Publishing → Add GitHub Actions publisher
- Repository:
3eyedtech-creator/educode-agent - Workflow:
release.yml - Environment name:
pypi
- In GitHub repo Settings → Environments, create environment
pypi(used by the release workflow).
# 1. Bump version in pyproject.toml and src/educode_agent/__init__.py
poetry version patch # or minor / major
# 2. Sync __init__.py version manually to match pyproject.toml
# 3. Commit, tag, and push
git add pyproject.toml src/educode_agent/__init__.py
git commit -m "chore(release): bump version to $(poetry version -s)"
git tag "v$(poetry version -s)"
git push origin main --tagsPushing a v*.*.* tag triggers .github/workflows/release.yml, which runs tests, builds the wheel/sdist, publishes to PyPI, and creates a GitHub Release.
poetry build
pip install dist/educode_agent-*.whl
educode --version
cd /path/to/a/test/project
educode init --mock-index
educode --model mock:loop run "smoke test"poetry build
poetry publish # requires PYPI_API_TOKEN configured