Skip to main content

OnIt

OnIt — the AI is working on the given task and will deliver the results shortly.

OnIt is a terminal AI agent. It runs on a model server you control — vLLM, Ollama, or MLX on Apple silicon — or on a hosted endpoint (OpenRouter, Ollama cloud), and drives its work through MCP tools: web search, weather, shell, file editing, and search over your own documents.

This README gets the text UI running. Everything else — web UI, containers, bot gateways, the full CLI and configuration reference — is in docs/.

Quick Start

Four steps: environment → model server → keys → run.

1. Install

OnIt needs Python 3.10–3.12 (3.12 recommended). Install it into its own virtual environment so dependencies stay isolated:

conda create -n onit python=3.12 -y && conda activate onit
# or: uv venv ~/.venvs/onit --python 3.12 && source ~/.venvs/onit/bin/activate

Install from the latest source — not the PyPI wheel, which lags behind:

git clone https://github.com/sibyl-oracles/onit.git
cd onit && pip install -e ".[all]"

Activate the environment again in every new shell before running onit. To pick up newer commits later: git pull && pip install -e '.[all]' -U --upgrade-strategy eager — and if dependencies ever end up conflicting, recreate the environment from scratch.

2. Start a model server

Pick whichever matches your hardware. The model must support tool calling — OnIt does its work through tools, so a model without it will talk but not act.

Ollama — simplest, runs anywhere:

OLLAMA_CONTEXT_LENGTH=131072 ollama serve   # raise the context; the 4096 default truncates agent turns
ollama pull qwen3:30b

→ host http://localhost:11434/v1 (the /v1 suffix is required)

MLX — Apple silicon:

pip install mlx-lm
mlx_lm.server --model mlx-community/Qwen3-30B-A3B-Instruct-2507-4bit --port 8080

→ host http://localhost:8080/v1

vLLM — NVIDIA GPUs:

vllm serve Qwen/Qwen3-30B-A3B-Instruct-2507 --port 8000 \
  --max-model-len 262144 --enable-auto-tool-choice --tool-call-parser hermes \
  --reasoning-parser qwen3 --chat-template-content-format string

→ host http://localhost:8000/v1

No GPU at hand? Skip this step and use a hosted endpoint in step 3: https://openrouter.ai/api/v1 (OpenRouter) or https://api.ollama.com (Ollama cloud).

With local Ollama and MLX, name the model explicitly — auto-detection picks the first entry the server lists, which is rarely the one you meant.

See docs/MODEL_SERVING.md for API keys on vLLM, context-window sizing, and running several servers with failover.

3. Keys

onit setup

The wizard asks for your model endpoint (host URL from step 2, plus the model name) and the API keys below. Settings land in ~/.onit/config.yaml; secrets go into your OS keychain. Press Enter to skip anything you don't need — you can rerun it any time, and onit setup --show prints what is currently set.

Key What it enables Getting one
Ollama API key Web search. The search tool uses the Ollama web search API; without a key it falls back to DuckDuckGo. The same key unlocks Ollama cloud models. Free tier — sign in at ollama.com and create a key. Nothing needs to run locally: the key alone is enough for search.
OpenWeatherMap The get_weather tool (current conditions and 5-day forecast). Free — openweathermap.org/api.
vLLM API key Only if you started vLLM with --api-key. Whatever you passed to vllm serve.
OpenRouter Hosted models, if that is your endpoint. openrouter.ai (paid).
GitHub token git push from the agent's shell, plus the github_repo tool — see below. GitHub → Settings → Developer settings → Personal access tokens (repo scope).
Hugging Face token Model and dataset downloads in --container runs — see below. huggingface.co → Settings → Access Tokens.

Environment variables work too, if you'd rather not use the keychain:

export OLLAMA_API_KEY=...            # web search + Ollama cloud
export OPENWEATHERMAP_API_KEY=...    # weather
export VLLM_API_KEY=...              # vLLM with --api-key
export OPENROUTER_API_KEY=...        # OpenRouter

4. Run

onit

That's the text UI. MCP tools start automatically, the agent works out of ~/sandbox, and \bye (or Ctrl+D) leaves. Running onit again picks the conversation back up where you left it.

Day to day

A few flags worth knowing:

onit --restart-session   # forget the previous conversation and start clean
onit --think             # reasoning mode, if the model supports it
onit --show-logs         # show what the tools are doing
onit --data-path ~/work  # work in a directory other than ~/sandbox

The agent reads and writes only inside its working directory — paths outside it are refused. To ask about documents you keep elsewhere, point it at a folder:

export ONIT_DOCUMENTS_PATH=~/company-docs
onit
> what is our vacation policy?

Full flag list, plus juggling several named sessions: docs/CLI.md. Tool-by-tool reference: docs/TOOLS.md. Hand-editing ~/.onit/config.yaml instead of rerunning onit setup: docs/CONFIGURATION.md.

GitHub and Hugging Face

Two integrations worth having for ML work: one lets the agent push code, the other lets it pull models and datasets.

GitHub

Store a personal access token with repo scope — onit setup (GitHub personal access token), or export GITHUB_TOKEN=.... Two things switch on:

  • git in the agent's shell. OnIt writes a GIT_ASKPASS helper into the bash tool's environment and mirrors the token to GH_TOKEN, so git clone, pull, and push over HTTPS reach private repos without an interactive prompt.
  • The github_repo tool — create, get, list, fork, and delete repositories through the API, no shelling out.

The shell is jailed to the working directory, so clone inside it — or point OnIt at the project you're working on:

onit --data-path ~/projects/my-model

Hugging Face

On the host, log in once with the Hub CLI. The token lands in ~/.cache/huggingface, and the agent's shell runs with your real HOME, so hf download, transformers, and datasets all find it:

pip install -U "huggingface_hub[cli]"
hf auth login          # older huggingface_hub: huggingface-cli login

A --container run cannot see your home directory. Store the token with onit setup (HuggingFace access token) instead and the launcher bridges it in as HF_TOKEN. The image also ships without the heavy ML packages — onit-install-ml [torch|hf|extras|all] installs CUDA-matched wheels onto the persistent volume (docs/DOCKER.md).

One container-only gotcha: the command allowlist is enforced there and carries git and git-lfs but not gh or hf. Add what you need with ONIT_ALLOWED_COMMANDS=gh,hf,huggingface-cli (docs/ISOLATION.md).

Beyond the terminal

onit serve web Browser chat UI with Google login (docs/CLI.md)
onit serve a2a A2A protocol server; send tasks with onit ask "…"
onit serve gateway Telegram or Viber bot (docs/GATEWAY_QUICK_START.md)
onit serve loop "task" --period 60 Repeat a task on a timer
onit --container Run the whole agent inside a hardened Docker container (docs/DOCKER.md)

Documentation

License

Apache License 2.0. See LICENSE for details.

Download files

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

Source Distribution

onit-0.1.4.tar.gz (625.3 kB view details)

Uploaded Source

Built Distribution

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

onit-0.1.4-py3-none-any.whl (676.7 kB view details)

Uploaded Python 3

File details

Details for the file onit-0.1.4.tar.gz.

File metadata

  • Download URL: onit-0.1.4.tar.gz
  • Upload date:
  • Size: 625.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for onit-0.1.4.tar.gz
Algorithm Hash digest
SHA256 87dce60c2018097df0e8b642272a560acea429b1ade99076d62fd41998881a96
MD5 fd7f553b32518bd492a85d2d97f9a353
BLAKE2b-256 4696a937c9175b8a373682da6a29f6295822877134a632a1c37a90ead4ecace5

See more details on using hashes here.

Provenance

The following attestation bundles were made for onit-0.1.4.tar.gz:

Publisher: publish.yml on sibyl-oracles/onit

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

File details

Details for the file onit-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: onit-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 676.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for onit-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 dbe101a8d1ec6f68b035135c1de6fb0e4dbfba85674e82d2e53ab6dc63215329
MD5 31d77b00984b2c1ed093f7f6e5b36265
BLAKE2b-256 4294cea11c2344d53ed119d90750f207efd605190cf7e4cbaa47d715ad1cb98b

See more details on using hashes here.

Provenance

The following attestation bundles were made for onit-0.1.4-py3-none-any.whl:

Publisher: publish.yml on sibyl-oracles/onit

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

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page