No project description provided
Project description
elmkit 🌳 Project Plan
Philosophy
- No frameworks, just functions
- Build only what we actually use
- Under 1000 lines total
- Ship in 3 days max
Core Components to Build
1. Client (client.py)
- Basic chat completion wrapper
- String or messages input support
- Sync + async methods
- Streaming support
- Built-in retry for rate limits
- Token counting
- Cost calculation
- Support OpenAI-compatible providers (DeepSeek, Groq)
2. Messages (messages.py)
- Simple Message dataclass
-
.to_dict()for API compatibility - Optional: ToolMessage variant
- Keep under 50 lines
3. Tools (tools.py)
- Function to OpenAI tool schema converter
- Tool execution helper
- Tool result formatting
- Simple decorator if helpful
4. Tracking (tracking.py)
- Simple call tracker/logger
- Track: latency, tokens, cost, errors
- Optional decorator for function tracking
- JSON structured logging
5. Utils (utils.py)
- Token counting helpers
- Cost calculation tables
- Any shared utilities
6. Package Setup
-
__init__.pywith clean exports -
pyproject.toml(modern Python packaging) - MIT License
-
.gitignore
Documentation
README.md Structure
- One-line description: "No-framework LLM utilities"
- Installation:
pip install elmkit - 3-4 real usage examples
- "No roadmap, no promises" disclaimer
- Anti-framework philosophy statement
Examples Folder
-
simple_chat.py- Basic usage -
tool_calling.py- Function calling example -
streaming.py- Streaming responses
What NOT to Build
- ❌ Registry systems
- ❌ Graph/node abstractions
- ❌ Memory management
- ❌ Chain/pipeline classes
- ❌ Callbacks
- ❌ Custom executors
- ❌ CLI tools
- ❌ Provider abstractions (just OpenAI-compatible)
Development Process
Phase 1: Core Development
- Start with
client.pyandmessages.py - Test with real project immediately
- Add other components as needed
- Keep testing with actual use cases
Phase 2: Packaging
- Create proper package structure
- Write README with examples
- Add
pyproject.toml - Test local install
Phase 3: Publishing
- Create GitHub repo
- Push code with clear README
- Optional: Publish to PyPI
- Optional: Write blog/social post
Quality Checks
- Every file under 200 lines
- Total codebase under 1000 lines
- Can explain any function in one sentence
- No abstract base classes unless absolutely needed
- API feels natural:
client.chat("Hello")
Success Metrics
- ✅ Can replace LangChain in our projects
- ✅ Debugging is trivial
- ✅ New developer understands in 5 minutes
- ✅ We actually want to use it
Marketing (Optional)
- GitHub repo with clear anti-framework stance
- X/Twitter post: "Replaced 1000 lines of LangChain..."
- LinkedIn post: Professional version
- Submit to HN: "Show HN: elmkit - LLM tools without the framework"
Remember
- We expect 0 users (besides ourselves)
- No maintenance obligations
- Just solving our own problem
- If it helps others, bonus
Next Steps
- Create folder structure
- Start coding
client.py - Test immediately in real project
- Iterate based on actual usage
- Ship when it works for us
"The best code is boring code. The best framework is no framework." 🌳
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
elmkit-0.1.0.tar.gz
(5.8 kB
view details)
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 elmkit-0.1.0.tar.gz.
File metadata
- Download URL: elmkit-0.1.0.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e220ec0182322cef7abdfea9f53a543604f660923bbb865f61a17bc4ccbea888
|
|
| MD5 |
c1c96d50b329168b4bb4fe9a676322fe
|
|
| BLAKE2b-256 |
dfab7421e2266139d14b331302ea76a7b533f652de6e7360205ba7dde8f0b04e
|
File details
Details for the file elmkit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: elmkit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66f3ddcc58dbf650b07f69c839020f474857f47548d63d19bea7bcda50dc0b0b
|
|
| MD5 |
81aff778dd09b95c52c3eb713509369a
|
|
| BLAKE2b-256 |
b40e81b49f7fa57b0d45d381d11f5746107ca5e72e719807e3370cd7cbae6cfe
|