Skip to main content

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__.py with 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

  1. Start with client.py and messages.py
  2. Test with real project immediately
  3. Add other components as needed
  4. Keep testing with actual use cases

Phase 2: Packaging

  1. Create proper package structure
  2. Write README with examples
  3. Add pyproject.toml
  4. Test local install

Phase 3: Publishing

  1. Create GitHub repo
  2. Push code with clear README
  3. Optional: Publish to PyPI
  4. 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

  1. Create folder structure
  2. Start coding client.py
  3. Test immediately in real project
  4. Iterate based on actual usage
  5. Ship when it works for us

"The best code is boring code. The best framework is no framework." 🌳

Project details


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)

Uploaded Source

Built Distribution

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

elmkit-0.1.0-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

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

Hashes for elmkit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e220ec0182322cef7abdfea9f53a543604f660923bbb865f61a17bc4ccbea888
MD5 c1c96d50b329168b4bb4fe9a676322fe
BLAKE2b-256 dfab7421e2266139d14b331302ea76a7b533f652de6e7360205ba7dde8f0b04e

See more details on using hashes here.

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

Hashes for elmkit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 66f3ddcc58dbf650b07f69c839020f474857f47548d63d19bea7bcda50dc0b0b
MD5 81aff778dd09b95c52c3eb713509369a
BLAKE2b-256 b40e81b49f7fa57b0d45d381d11f5746107ca5e72e719807e3370cd7cbae6cfe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page