Agentik — a CLI-first, modular agent framework that runs LLMs via OpenRouter.
Project description
Agentik Framework
Agentik is a CLI‑first, modular agent framework that runs LLMs via OpenRouter. It focuses on developer ergonomics: clean configs, a batteries‑included CLI, safe tool execution, rich transcripts with run metadata, and a dev profile with auto‑rerun watching for fast iteration.
Highlights
-
CLI‑first workflow:
agentik run,agentik dev watch,agentik tools ... -
OpenRouter integration: one key → many models
-
Agent loop: plan → (optional tool) → reflect → finalize
-
Pluggable tooling (via entry points) with built‑ins:
http_fetch— GET with caching + limitshtml_to_text— HTML → textwrite_file— safe file writer
-
Policies enforced per tool call:
allow_network,allow_filesystem -
Transcripts: JSONL with
meta_start/meta_end(tokens, cost estimate, timings, tags) -
Run profiles:
fast,thorough,deterministic,creative,cheap,dev -
Dev watcher: polling file watcher, auto‑rerun on save (no extra deps)
-
Memory: file‑backed minimal memory (
jsonor in‑memorydict)
Installation
pip install agentik-framework
# for local development
pip install -e .[dev]
OpenRouter API key
Set your key once (recommended):
PowerShell (Windows):
setx OPENROUTER_API_KEY "sk-or-..."
# then restart your shell
Or via Agentik RC:
agentik keys set openrouter sk-or-... --global
Verify your setup:
agentik self-test
Quick Start
Initialize a project:
agentik init . --template basic --name "My Agent Project"
Scaffold an agent:
agentik new agent research \
--template basic \
--tools http_fetch,html_to_text,write_file \
--with-tests
Create a minimal config (save as configs/agent.yaml):
agent:
name: research
goal: "Research and summarize web sources"
loop:
max_steps: 4
reflect: true
llm:
model: openai/gpt-4o-mini
temperature: 0.2
memory:
type: json
path: ./memory/agent.json
policies:
allow_network: true
allow_filesystem: true
tools:
- http_fetch
- html_to_text
- write_file
Run it:
agentik run .\configs\agent.yaml -p "Summarize the latest about OpenRouter rate limits"
CLI Reference
agentik version
Print the current version.
agentik self-test
Environment sanity checks (Python, OS, OpenRouter key, RC path).
agentik init
Initialize a project folder.
agentik init [PATH] --template basic --force --name "Project Name"
agentik run
Run an agent loop with profiles and run metadata.
agentik run CONFIG \
-p "Prompt text" \
--model TEXT \
--temperature FLOAT \
--stream \
--dry-run \
--save-transcript PATH \
--profile [fast|thorough|deterministic|creative|cheap|dev|none] \
--tag TAG \
--note TEXT \
--run-id TEXT \
--obs-max-chars INT
Keys
agentik keys set openrouter sk-or-... [--global|--local]
agentik keys show
Models
agentik models list [--filter TEXT] [--refresh]
New (scaffolding)
agentik new agent NAME \
--template basic \
--tools "t1,t2" \
--memory json \
--memory-path ./memory/agent.json \
--to . \
--with-tests \
--force
agentik new tool NAME \
--template python \
--to . \
--with-tests \
--force
Templates
agentik template list
agentik template apply kind/name --to . --force --name MyArtifact
agentik template pull <git-or-zip-url> --to .
Tools
agentik tools list
agentik tools info NAME
agentik tools run NAME --arg key=value --arg key2=value2 [--json]
Validate
agentik validate file CONFIG.yaml \
--show-effective \
--model TEXT \
--temperature FLOAT \
--max-steps INT
Batch
Process prompts from CSV or JSONL.
agentik batch run FILE \
--column prompt \
--out results.jsonl \
--model TEXT \
--temperature FLOAT
Memory
agentik memory init --type json --path ./memory/agentik.json
agentik memory recall --n 10 [--config CONFIG.yaml]
agentik memory summarize --n 20 --max-chars 1200 [--config CONFIG.yaml]
agentik memory clear [--config CONFIG.yaml]
agentik memory path [--config CONFIG.yaml]
Eval
Tiny harness to check expected substrings/regex.
agentik eval run FILE.jsonl --config CONFIG.yaml --out eval_results.jsonl
Dev Watch (auto‑rerun)
Watches files and re‑runs on change — great during development.
agentik dev watch CONFIG \
-p "Prompt text" \
--prompt-file PATH \
--path PATH \ # repeatable (default .)
--include GLOB \ # repeatable (default python/yaml/md/templates/tools)
--exclude GLOB \ # repeatable
--interval 0.6 \
--debounce 0.5 \
--clear/--no-clear \
--stream/--no-stream \
--profile dev \
--save-transcripts DIR \
--obs-max-chars 800 \
--no-initial-run \
--tag TAG \ # repeatable (default "dev")
--note TEXT
Example (PowerShell):
agentik dev watch .\configs\agent.yaml `
--prompt-file .\prompt.txt `
--path . `
--include **/*.py --include **/*.yaml --include templates/** `
--exclude .venv/** --exclude runs/** `
--save-transcripts .\runs `
--stream
Tools & Policies
Built‑in tools (selected):
-
http_fetch(url, ttl, timeout, max_bytes, headers, allow_network)Returns{ok, data, error, meta}withdata.text,data.status, and cache hints. -
html_to_text(html, keep_newlines, drop_links, max_chars)Lightweight HTML → text (dependency‑free). -
write_file(path, content, encoding, overwrite, allow_abs, allow_filesystem)Safe writer with sandboxing and system‑path guards.
Policies (YAML):
policies:
allow_network: true
allow_filesystem: false
If a tool requires a disabled capability, Agentik blocks it and records an observation.
Transcripts & Cost
Each run can append JSONL records via --save-transcript. Files include:
meta_start: run id, profile, tags, agent, model, policies, memory path- Tool calls and assistant responses
meta_end: timings (planner/tools/reflect), tokens (prompt/completion/total), estimated cost
Cost is derived from OpenRouter pricing when available. You can override with env vars:
# USD per 1K tokens
$env:AGENTIK_PRICE_PROMPT_PER_1K = "0.50"
$env:AGENTIK_PRICE_COMPLETION_PER_1K = "1.50"
Configuration Reference (YAML)
agent:
name: my-agent
goal: "Help with tasks."
loop:
max_steps: 4
reflect: true
llm:
model: openai/gpt-4o-mini
temperature: 0.2
memory:
type: json # json | dict
path: ./memory/agent.json
policies:
allow_network: true
allow_filesystem: false
tools:
- http_fetch
- html_to_text
Development
- Lint/format:
ruff check .andblack . - Tests:
pytest -q - Build:
python -m build - Publish:
twine upload dist/*
Authors
- Vinay Joshi — joshivinay822@gmail.com
- Avinash Raghuvanshi — avi95461@gmail.com
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentik_framework-0.1.5.tar.gz.
File metadata
- Download URL: agentik_framework-0.1.5.tar.gz
- Upload date:
- Size: 36.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de282a04fb1d6826bb42201efaa38af1c2e7ccd4423d5ba18d42ef5fc9f7e8e2
|
|
| MD5 |
d7942a7aca02b6d06cbcaa27291a6ac0
|
|
| BLAKE2b-256 |
4a01b5c4085b19a75e4eaf100572814959c1ec40ac09bbaff10eab8074c5249f
|
File details
Details for the file agentik_framework-0.1.5-py3-none-any.whl.
File metadata
- Download URL: agentik_framework-0.1.5-py3-none-any.whl
- Upload date:
- Size: 41.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62e673366cc8af8de0ecaa731002f331a2ac0f0dbd85bcc1a82b63e59d69eae2
|
|
| MD5 |
768ba1e48cc3aa027a309fbc8950693a
|
|
| BLAKE2b-256 |
abe28e1e17c7aaf453355fc857f459612e5ba97b161d2e3e1ad3e4e375545a45
|